คำนำ
อินเทอร์เฟซรายการในแพ็คเกจ java.util สืบทอดอินเทอร์เฟซคอลเลกชันและใช้ในการจัดเก็บคอลเลกชันวัตถุ ดังนั้นเมื่อเรียงลำดับวัตถุเหล่านี้ทั้งคลาสวัตถุสามารถเปรียบเทียบวัตถุเดียวกันเองหรือใช้ตัวเปรียบเทียบเพื่อทำการเปรียบเทียบและการเรียงลำดับ
ชั้นเรียนของนักเรียนรวมถึงแอตทริบิวต์ชื่อและอายุถูกจัดเรียงตามลำดับจากน้อยไปมากในชื่อเมื่อเปรียบเทียบและหากชื่อเหมือนกันมันจะถูกจัดเรียงตามลำดับจากน้อยไปมาก
ประเภทแรก: การเปรียบเทียบคลาสเอนทิตีด้วยตนเอง
(ใช้อินเทอร์เฟซที่เปรียบเทียบได้: public interface Comparable<T> มีการประกาศวิธีการ: public int compareTo(T o); )
รหัสตัวอย่าง:
นักเรียนชั้นเรียนสาธารณะใช้การเปรียบเทียบ <student> {ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; นักเรียนสาธารณะ () {super (); // todo toDo stub stub} นักเรียนสาธารณะ (ชื่อสตริงอายุ int) {super (); this.name = ชื่อ; this.age = อายุ; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; } @Override สาธารณะ int compereto (นักเรียน o) {// todo วิธีการสร้างอัตโนมัติ stub int flag = this.name.compareto (o.name); if (flag == 0) {flag = this.age - o.age; } return flag; - จากนั้นใช้วิธี sort(Comparator<? super E> c) ของคลาสรายการหรือ sort(List<T> list) ของคลาสเครื่องมือ java.util.Collections (จริง ๆ แล้วมีเพียงประโยคเดียวเท่านั้น: list.sort(null); )
รายการ <student> นักเรียน = New ArrayList <Tudent> (); นักเรียน ADD (นักเรียนใหม่ ("A", 10)); นักเรียน ADD (นักเรียนใหม่ ("B", 12)); นักเรียน ADD (นักเรียนใหม่ ("B", 11)); นักเรียน ADD (นักเรียนใหม่ ("AC", 20)); Students.Sort (NULL); //collections.sort( นักศึกษา); ผลลัพธ์:
10 AC 20 B 11 B 12
ประเภทที่สอง: เรียงลำดับด้วยความช่วยเหลือของตัวเปรียบเทียบ
รหัสตัวอย่าง:
นักเรียนชั้นเรียนสาธารณะ {ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; นักเรียนสาธารณะ () {super (); // todo toDo stub stub} นักเรียนสาธารณะ (ชื่อสตริงอายุ int) {super (); this.name = ชื่อ; this.age = อายุ; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; - ตัวเปรียบเทียบ java.util.Comparator Class เป็นอินเทอร์เฟซ ( public interface Comparator<T> ) ซึ่งมี int compare(T o1, T o2); และวิธีการอื่น ๆ :
ตัวเปรียบเทียบของเราต้องการใช้อินเทอร์เฟซนี้และใช้วิธี compare :
นักศึกษาชั้นเรียนเอกชนใช้ตัวเปรียบเทียบ <student> {@Override สาธารณะ int เปรียบเทียบ (นักเรียน O1, นักเรียน O2) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub int flag = o1.getName (). compereto (o2.getName ()); if (flag == 0) {flag = o1.getage () - o2.getage (); } return flag; - เมื่อเปรียบเทียบคุณสามารถใช้วิธี sort(Comparator<? super E> c) วิธีการของรายการ (หรือรายการ (รายการ <t> รายการ, ตัวเปรียบเทียบ <? super t> c) วิธีการของ java.util.Collections Class Tool คลาสเครื่องมือ sort(List<T> list, Comparator<? super T> c)
รายการ <student> นักเรียน = New ArrayList <Tudent> (); นักเรียน ADD (นักเรียนใหม่ ("A", 10)); นักเรียน ADD (นักเรียนใหม่ ("B", 12)); นักเรียน ADD (นักเรียนใหม่ ("B", 11)); นักเรียน ADD (นักเรียนใหม่ ("AC", 20)); ทดสอบ t = การทดสอบใหม่ (); นักเรียน SORT (T.New StudentComparator ()); //collections.sort( นักศึกษา, T.New Studentcomparator ()); สำหรับ (นักเรียนนักเรียน: นักเรียน) {system.out.println (student.getName ()+""+student.getage ()); - ผลลัพธ์เหมือนกับวิธีแรก:
10 AC 20 B 11 B 12
สรุป
ข้างต้นคือทั้งหมดเกี่ยวกับรายการการเรียงลำดับใน Java ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร