Arrays.sort และการเรียงลำดับ
เรียงลำดับอาร์เรย์ชนิดพื้นฐานและออบเจ็กต์
Arrays.sort และการเรียงลำดับ เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุผลที่ต้องมีคลาสอรรถประโยชน์
อาร์เรย์ใน Java เป็นอ็อบเจ็กต์ แต่มีเมธอดในตัวอยู่น้อยมาก คลาส java.util.Arrays จึงช่วยเติมเต็มส่วนนี้ด้วย เมธอดช่วยเหลือแบบคงที่ สำหรับการเรียงลำดับ การค้นหา การเปรียบเทียบ การคัดลอก และการแสดงอาร์เรย์
- นำเข้าคลาสนี้ด้วย
import java.util.Arrays; - ทุกเมธอดเป็น
staticจึงเรียกใช้ผ่านตัวคลาสโดยตรงได้ เช่นArrays.sort(...)
การเรียงลำดับอาร์เรย์ชนิดพื้นฐาน
Arrays.sort(int[]) เรียงลำดับอาร์เรย์ โดยแก้ไขอาร์เรย์เดิมโดยตรง ด้วยอัลกอริทึมเรียงลำดับแบบเร็วที่ใช้จุดหมุนสองจุด เมธอดนี้ไม่มีค่าที่ส่งกลับ อาร์เรย์เดิมจะถูกจัดเรียงใหม่
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {5, 2, 8, 1, 9, 3};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
}
}การเรียงลำดับชนิดพื้นฐานอื่น
มีเมธอดหลายรูปแบบสำหรับชนิดพื้นฐานทุกชนิด เช่น double[], long[], char[] และชนิดอื่น ๆ ทั้งหมดจะเรียงจากน้อยไปมาก
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
double[] prices = {3.5, 1.2, 9.9, 0.5};
Arrays.sort(prices);
System.out.println(Arrays.toString(prices));
}
}การเรียงลำดับบางช่วง
คุณสามารถเรียงลำดับเพียงบางส่วนของอาร์เรย์ด้วย Arrays.sort(array, fromIndex, toIndex) ช่วงดังกล่าว รวม fromIndex และ ไม่รวม toIndex
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {5, 2, 8, 1, 9, 3};
Arrays.sort(nums, 1, 4);
System.out.println(Arrays.toString(nums));
}
}การเรียงลำดับอาร์เรย์ของอ็อบเจ็กต์
สำหรับอาร์เรย์ของอ็อบเจ็กต์ เช่น String[] Arrays.sort จะใช้ ลำดับตามธรรมชาติ ขององค์ประกอบ ซึ่งกำหนดโดยการทำงานของ Comparable ข้อความจะถูกเรียงตามลำดับพจนานุกรม
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] names = {"Charlie", "Alice", "Bob"};
Arrays.sort(names);
System.out.println(Arrays.toString(names));
}
}การเรียงลำดับด้วยตัวเปรียบเทียบ
หากต้องการเปลี่ยนลำดับตามธรรมชาติ ให้ส่งตัวเปรียบเทียบเข้าไป Comparator.reverseOrder() จะเรียงจากมากไปน้อย วิธีนี้ใช้ได้เฉพาะกับ อาร์เรย์ของอ็อบเจ็กต์ ไม่ใช่อาร์เรย์ชนิดพื้นฐาน
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] names = {"Charlie", "Alice", "Bob"};
Arrays.sort(names, Comparator.reverseOrder());
System.out.println(Arrays.toString(names));
}
}ตัวเปรียบเทียบตามความยาว
ตัวเปรียบเทียบสามารถเปรียบเทียบคุณสมบัติใด ๆ ก็ได้ Comparator.comparingInt(String::length) จะเรียงสตริงจากสั้นที่สุดไปยาวที่สุด
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] words = {"banana", "fig", "apple"};
Arrays.sort(words, Comparator.comparingInt(String::length));
System.out.println(Arrays.toString(words));
}
}ความเสถียร
การเรียงลำดับอาร์เรย์ของอ็อบเจ็กต์มี ความเสถียร กล่าวคือองค์ประกอบที่เท่ากันจะคงลำดับสัมพัทธ์เดิมไว้ การเรียงลำดับชนิดพื้นฐานไม่รับประกันความเสถียร แต่สำหรับค่าชนิดพื้นฐานที่เท่ากันจะไม่สามารถแยกแยะได้ จึงไม่มีผล
การเรียงลำดับแบบขนาน
สำหรับอาร์เรย์ที่มีขนาดใหญ่มาก Arrays.parallelSort จะแบ่งงานไปยังแกนประมวลผลหลายแกน รูปแบบการเรียกใช้เหมือนกับ sort และผลลัพธ์เหมือนกัน เพียงแต่เร็วกว่าเมื่อใช้กับข้อมูลขนาดใหญ่
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {7, 3, 9, 1, 5, 2, 8, 4};
Arrays.parallelSort(nums);
System.out.println(Arrays.toString(nums));
}
}จุดพลาดที่พบบ่อย
Arrays.sort คืนค่าเป็น void บรรทัดอย่าง int[] sorted = Arrays.sort(nums); จะ ไม่สามารถคอมไพล์ได้ ให้เรียงลำดับก่อน แล้วใช้ตัวแปรเดิม
เรียงลำดับแล้วแสดงผล
ลำดับการทำงานทั่วไปคือ เรียงอาร์เรย์โดยแก้ไขอาร์เรย์เดิมโดยตรง แล้วแสดงผลด้วย Arrays.toString เพื่อตรวจสอบผลลัพธ์
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] scores = {88, 72, 95, 60, 81};
Arrays.sort(scores);
System.out.println("Lowest: " + scores[0]);
System.out.println("Highest: " + scores[scores.length - 1]);
System.out.println(Arrays.toString(scores));
}
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการเรียงลำดับ
ทบทวน
คุณได้เรียนรู้การเรียงลำดับอาร์เรย์ด้วยคลาสอรรถประโยชน์ Arrays แล้ว
Arrays.sort(arr)เรียงชนิดพื้นฐานหรืออ็อบเจ็กต์โดยแก้ไขอาร์เรย์เดิมโดยตรงและเรียงจากน้อยไปมาก- เมธอดหลายรูปแบบสำหรับช่วงข้อมูลอย่าง
sort(arr, from, to)ใช้เรียงอาร์เรย์เพียงบางส่วน - อาร์เรย์ของอ็อบเจ็กต์รับตัวเปรียบเทียบเพื่อกำหนดลำดับแบบกำหนดเองได้
parallelSortช่วยเร่งการเรียงลำดับอาร์เรย์ขนาดใหญ่
คำถามที่พบบ่อย
บทเรียน “Arrays.sort และการเรียงลำดับ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Arrays.sort และการเรียงลำดับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Arrays.sort และการเรียงลำดับ”
เรียงลำดับอาร์เรย์ชนิดพื้นฐานและออบเจ็กต์ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “Arrays.sort และการเรียงลำดับ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Arrays.sort และการเรียงลำดับ
- Arrays.binarySearch
- Arrays.fill และ copyOf
- Arrays.equals และ toString