วิธีที่ 1: ใช้อินเทอร์เฟซเปรียบเทียบและแทนที่วิธีการเปรียบเทียบ
รหัสระดับเอนทิตี:
นำเข้า java.util.Comparator;/*** วิธีการเรียนชั้นเรียนนักเรียน 1* ใช้อินเตอร์เฟสเปรียบเทียบ* และเขียนทับวิธีการเปรียบเทียบ* @author liaot**/นักเรียนชั้นเรียนสาธารณะใช้ตัวเปรียบเทียบ <นักเรียน> {ชื่อสตริงส่วนตัว; // ชื่อ Private Int อายุ; // Age/rewrite วิธีการเปรียบเทียบตัวอย่างนี้ถูกกำหนดเป็นการเปรียบเทียบโดยอายุ @Override สาธารณะ int เปรียบเทียบ (นักเรียน O1, นักเรียน O2) {ถ้า (o1.getage ()> o2.getage ()) {return 1; } else {return -1; }} นักเรียนสาธารณะ (ชื่อสตริงอายุ int) {super (); this.name = ชื่อ; this.age = อายุ; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; -คลาสทดสอบ:
นำเข้า java.util.arraylist; นำเข้า java.util.collections; นำเข้า java.util.list; ชั้นเรียนสาธารณะหลัก {โมฆะสาธารณะคงที่หลัก (String [] args) {// เริ่มต้นนักเรียนสี่คนที่แตกต่างกัน stu1 = นักเรียนใหม่ ("passy a", 20); นักเรียน stu2 = นักเรียนใหม่ ("passy a", 18); นักเรียน stu3 = นักเรียนใหม่ ("passy c", 16); นักเรียน stu4 = นักเรียนใหม่ ("passy c", 19); // สร้างรายการใหม่เพื่อเพิ่มนักเรียนในรายการ <student> stulist = arrayList ใหม่ <> (); Stulist.add (Stu1); stulist.add (Stu2); stulist.add (Stu3); stulist.add (Stu4); System.out.println ("ก่อนการเรียงลำดับ: ======="); สำหรับ (นักเรียน stu: stulist) {system.out.println ("ชื่อ:"+stu.getName ()+"อายุ"+stu.getage ()); } // การเรียงลำดับคอลเลกชัน SORT (Stulist, Stu1); // พารามิเตอร์แรกคือรายการพารามิเตอร์ที่สองเป็นอินสแตนซ์ของ Object System.out.println ("เรียงลำดับ: ======"); สำหรับ (นักเรียน stu: stulist) {system.out.println ("ชื่อ:"+stu.getName ()+"อายุ"+stu.getage ()); -ผลการทำงาน:
วิธีที่ 2: ใช้อินเทอร์เฟซที่เปรียบเทียบได้และแทนที่วิธีการเปรียบเทียบ
/** * วิธีการเรียนชั้นเรียนนักเรียน 2 ใช้อินเทอร์เฟซที่เปรียบเทียบได้และเขียนวิธีการเปรียบเทียบ * * @author liaot * */นักเรียนชั้นเรียนสาธารณะ 2 ใช้การเปรียบเทียบ <student2> {ชื่อสตริงส่วนตัว; // ชื่อ Private Int อายุ; // age // rewrite วิธีการเปรียบเทียบตัวอย่างนี้ถูกกำหนดเป็นการเปรียบเทียบโดย Age @Override Public Int Compareto (Student2 Stu) {ถ้า (this.age> stu.getage ()) {return 1; } else {return -1; }} Public Student2 (ชื่อสตริงอายุ int) {super (); this.name = ชื่อ; this.age = อายุ; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; -ชั้นเรียนทดสอบ
นำเข้า java.util.arraylist; นำเข้า java.util.collections; นำเข้า java.util.list; คลาสสาธารณะ Main2 {โมฆะคงที่สาธารณะหลัก (String [] args) {// เริ่มต้นนักเรียนสี่คนที่แตกต่างกัน student2 stu2 = นักศึกษาใหม่ 2 ("passy a", 18); student2 stu3 = ใหม่ student2 ("passy c", 16); student2 stu4 = นักศึกษาใหม่ 2 ("passy c", 19); // สร้างรายการใหม่เพื่อเพิ่มนักเรียนในรายการ <student2> stulist = new ArrayList <> (); Stulist.add (Stu1); stulist.add (Stu2); stulist.add (Stu3); stulist.add (Stu4); System.out.println ("ก่อนการเรียงลำดับ: ======="); สำหรับ (Student2 Stu: Stulist) {System.out.println ("ชื่อ:"+stu.getName ()+"อายุ"+stu.getage ()); } // sort collections.sort (stulist); // มีพารามิเตอร์เดียวเท่านั้นคือรายการ System.out.println ("เรียงลำดับ: ======"); สำหรับ (Student2 Stu: Stulist) {System.out.println ("ชื่อ:"+stu.getName ()+"อายุ"+stu.getage ()); -การรันผลลัพธ์
3. สรุป: ความแตกต่างระหว่างการเขียนและการใช้งานทั้งสองวิธี:
วิธีการเรียงลำดับ Java ข้างต้นตามคุณสมบัติของวัตถุในรายการคือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น