ตัวเปรียบเทียบเป็นอินเทอร์เฟซซึ่งสามารถแทนที่ทั้งสองวิธีของการเปรียบเทียบ () และเท่ากับ () สำหรับฟังก์ชั่นเปรียบเทียบราคา หากเป็นโมฆะมันจะใช้ลำดับเริ่มต้นขององค์ประกอบเช่น A, B, C, D, E, F, G, นั่นคือ A, B, C, D, E, F, G, แน่นอนว่าเป็นจริงสำหรับตัวเลข
เปรียบเทียบ (a, b) วิธี: ส่งคืนจำนวนเต็มลบ, ศูนย์หรือจำนวนเต็มบวกตามพารามิเตอร์แรกซึ่งน้อยกว่าเท่ากับหรือมากกว่าพารามิเตอร์ที่สอง
วิธีการเท่ากับ (OBJ): ส่งคืนจริงเฉพาะในกรณีที่วัตถุที่ระบุยังเป็นตัวเปรียบเทียบและการเรียงลำดับเดียวกับตัวเปรียบเทียบนี้ถูกบังคับให้นำไปใช้
พารามิเตอร์ที่สองของ collections.sort (รายการ, pricecomparator ใหม่ ()); ส่งคืนค่า int-type ซึ่งเทียบเท่ากับธงบอกวิธีการเรียงลำดับในคำสั่งซื้อรายการ
วิธีการใช้งานรหัสเฉพาะมีดังนี้:
ชั้นเรียน Book Entity:
แพ็คเกจ com.tjcyjd.Comparator; นำเข้า java.text.decimalformat; นำเข้า java.text.simpledateFormat; นำเข้า Java.util.Gregoriancalendar; นำเข้า java.util.iterator; นำเข้า java.util.treemap; / ** * คลาสเอนทิตีหนังสือ * * @author yjd * */ หนังสือคลาสสาธารณะใช้การเปรียบเทียบ {// กำหนดคลาสชื่อหนังสือซึ่งสืบทอดโดยค่าเริ่มต้นจากคลาสวัตถุ ID ID สาธารณะ // หมายเลขสตริงสาธารณะชื่อ // ชื่อสองราคาสาธารณะ; // ราคาผู้แต่งสตริงส่วนตัว; // ผู้แต่งสาธารณะ Gregoriancalendar ปฏิทิน; // วันที่ตีพิมพ์หนังสือสาธารณะ () {this (0, "x", 0.0, ใหม่ Gregoriancalendar (), ""); } หนังสือสาธารณะ (int id, ชื่อสตริง, ราคาสองเท่า, ปฏิทิน GregorianCalendar, String Author) {this.id = id; this.name = ชื่อ; this.price = ราคา; this.calendar = ปฏิทิน; this.author = ผู้แต่ง; } // เขียนวิธีที่สืบทอดมาจากวัตถุคลาสแม่เพื่อให้เป็นไปตามข้อกำหนดของข้อมูลคลาสหนังสือคำอธิบายสตริงสาธารณะ toString () {String showsTr.Tr = id + "/t" + ชื่อ; // กำหนดสตริงที่แสดงข้อมูลคลาส decimalformat formatPrice = ใหม่ decimalformat ("0.00"); // ราคารูปแบบไปยังสถานที่ทศนิยมสองตำแหน่งแสดงให้เห็นถึง + = "/t" + formatPrice.Format (ราคา); // ราคารูปแบบแสดงให้เห็น SimpledateFormat formatDate = new SimpledateFormat ("Yyyy Year MM Month Day Day"); showstr + = "/t" + formatdate.format (calendar.getTime ()); // รูปแบบการส่งคืนเวลาแสดงผล; // return class Information String} public int compereto (Object obj) {// เมธอดในหนังสืออินเตอร์เฟสที่เปรียบเทียบได้ B = (Book) OBJ; ส่งคืนสิ่งนี้ - B.ID; // เปรียบเทียบขนาดตาม ID ของหนังสือที่ใช้สำหรับการเรียงลำดับเริ่มต้น} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {หนังสือ B1 = หนังสือเล่มใหม่ (10,000, "ความฝันของห้องสีแดง", 150.86, Gregoriancalendar ใหม่ (2009, 01, 25), "Cao Xueqin, Gao e"); Book B2 = หนังสือเล่มใหม่ (10001, "Romance of the Three Kingdoms", 99.68, New Gregoriancalendar (2008, 7, 8), "Luo Guanzhong"); Book B3 = หนังสือเล่มใหม่ (10002, "Margin น้ำ", 100.8, New Gregoriancalendar (2009, 6, 28), "Shi Nai'an"); Book B4 = หนังสือเล่มใหม่ (10003, "Journey to the West", 120.8, New Gregoriancalendar (2011, 6, 8), "Wu Cheng'en"); Book B5 = หนังสือเล่มใหม่ (10004, "The Legend of the Condor Heroes", 10.4, New Gregoriancalendar (2011, 9, 23), "Sohu"); treemap tm = new treemap (); tm.put (b1, จำนวนเต็มใหม่ (255)); tm.put (b2, จำนวนเต็มใหม่ (122)); tm.put (b3, จำนวนเต็มใหม่ (688)); tm.put (B4, จำนวนเต็มใหม่ (453)); tm.put (b5, จำนวนเต็มใหม่ (40)); ตัววนซ้ำมัน = tm.keyset (). iterator (); Key Object = null, value = null; หนังสือ bb = null; ในขณะที่ (it.hasnext ()) {key = it.next (); bb = (หนังสือ) คีย์; ค่า = tm.get (คีย์); System.out.println (bb.toString () + "/t สินค้าคงคลัง:" + tm.get (คีย์)); - ตัวเปรียบเทียบและคลาสทดสอบที่กำหนดเอง:
แพ็คเกจ com.tjcyjd.Comparator; นำเข้า java.util.arraylist; นำเข้า Java.util.Collections; นำเข้า Java.util.Comparator; นำเข้า Java.util.Gregoriancalendar; นำเข้า java.util.iterator; นำเข้า java.util.list; คลาสสาธารณะ usecomparator {โมฆะคงที่สาธารณะหลัก (String args []) {list <book> list = new ArrayList <Book> (); // ARRAY Sequence Book B1 = หนังสือเล่มใหม่ (10,000, "Dream of Red Mansions", 150.86, New Gregoriancalendar (2009, 01, 25), "Cao Xueqin, Gao E"); Book B2 = หนังสือเล่มใหม่ (10001, "Romance of the Three Kingdoms", 99.68, New Gregoriancalendar (2008, 7, 8), "Luo Guanzhong"); Book B3 = หนังสือเล่มใหม่ (10002, "Margin น้ำ", 100.8, New Gregoriancalendar (2009, 6, 28), "Shi Nai'an"); Book B4 = หนังสือเล่มใหม่ (10003, "Journey to the West", 120.8, New Gregoriancalendar (2011, 6, 8), "Wu Chengen"); Book B5 = หนังสือเล่มใหม่ (10004, "Tianlong Baba", 10.4, New Gregoriancalendar (2011, 9, 23), "Sohu"); list.add (b1); list.add (b2); list.add (b3); list.add (b4); list.add (b5); // collections.sort (รายการ); // ไม่มีตัวเปรียบเทียบเริ่มต้น System.out.println ("องค์ประกอบในลำดับอาร์เรย์:"); MyPrint (รายการ); collections.sort (รายการ, pricecomparator ใหม่ ()); // เรียงลำดับตาม price system.out.println ("เรียงตามราคาหนังสือ:"); MyPrint (รายการ); collections.sort (รายการ, calendarmarmomparator ใหม่ ()); // เรียงลำดับตาม Time System.out.println ("จัดเรียงตามหนังสือสาธารณะคงที่สาธารณะโมฆะ myPrint (รายการ <book> รายการ) {iterator it = list.iterator (); // รับตัววนซ้ำสำหรับการสำรวจองค์ประกอบทั้งหมดในรายการ (it.hasnext ()) {// // it.next ()); // แสดงองค์ประกอบนี้}} // ตัวเปรียบเทียบที่กำหนดเอง: เรียงลำดับโดยราคาของหนังสือ pricecomparator แบบคงที่ใช้ตัวเปรียบเทียบ {public int Compare (Object Object1, Object 2) {// ใช้วิธีการในอินเตอร์เฟสหนังสือ P1 = (Book) Object1; Double (P2.Price))}} // ใช้วิธีการในหนังสืออินเตอร์เฟส P1 = (หนังสือ) Object1; ใช้วิธีการในหนังสืออินเตอร์เฟส P1 = (หนังสือ) Object1; // การคัดเลือกนักแสดง P2 = (หนังสือ) Object2; ส่งคืน p2.calendar.compareto (P1.Calendar); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น