ที่นี่เราหารือเกี่ยวกับการเรียงลำดับของรายการตั้งค่าและแผนที่รวมถึงการเรียงลำดับตามค่าแผนที่
1) รายการเรียงลำดับ
การเรียงลำดับรายการสามารถใช้วิธีการเรียงลำดับของคอลเลกชันโดยตรงหรือวิธีการเรียงลำดับของอาร์เรย์ ในการวิเคราะห์ขั้นสุดท้ายคอลเลกชันคือการเรียกวิธีการเรียงลำดับของอาร์เรย์
สาธารณะคงที่ <T> การเรียงลำดับเป็นโมฆะ (รายการ <t> รายการ, comparator <? super t> c) {object [] a = list.toarray (); array.sort (A, (เปรียบเทียบ) C); listiterator i = list.listiterator (); สำหรับ (int j = 0; j <a.length; j ++) {i.next (); i.set (a [j]); -หากเป็นวัตถุที่กำหนดเองคุณต้องใช้อินเทอร์เฟซที่เปรียบเทียบได้เพื่อให้วัตถุนั้นมีฟังก์ชั่นของ "การเปรียบเทียบ" แน่นอนเรายังสามารถใช้ตัวเปรียบเทียบภายนอกเพื่อระบุการเรียงลำดับ
ตัวอย่างเช่น:
แพ็คเกจ com.fox; /** * @author huangfox * @desc */ผู้ใช้คลาสสาธารณะใช้การเปรียบเทียบ <ผู้ใช้> {ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; ผู้ใช้สาธารณะ () {} ผู้ใช้สาธารณะ (ชื่อสตริงอายุ int) {super (); this.name = ชื่อ; this.age = อายุ; } @Override สตริงสาธารณะ toString () {return "ชื่อ:" + ชื่อ + ", อายุ:" + อายุ; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; } @Override public int compereto (ผู้ใช้ o) {ถ้า (o.age <this.age) ส่งคืน 1; อื่นถ้า (O.AGE> this.age) กลับ -1; กลับมาอีก 0; } / ** * @param args * / โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ผู้ใช้ u1 = ผู้ใช้ใหม่ ("ฟ็อกซ์", 11); ผู้ใช้ U2 = ผู้ใช้ใหม่ ("FOX2", 21); System.out.println (U2.Compareto (U1)); -เรียงลำดับโดย:
// รายการ <user> us = new ArrayList <ผู้ใช้> (); รายการ <user> us = ใหม่ LinkedList <ผู้ใช้> (); US.ADD (ผู้ใช้ใหม่ ("F5", 12)); US.ADD (ผู้ใช้ใหม่ ("F2", 22)); us.add (ผู้ใช้ใหม่ ("f3", 2)); US.ADD (ผู้ใช้ใหม่ ("F4", 14)); US.ADD (ผู้ใช้ใหม่ ("F5", 32)); US.ADD (ผู้ใช้ใหม่ ("F4", 12)); US.ADD (ผู้ใช้ใหม่ ("F7", 17)); US.ADD (ผู้ใช้ใหม่ ("F8", 52)); System.out.println (us.toString ()); bt long = system.nanotime (); collections.sort (us, ตัวเปรียบเทียบใหม่ <user> () {@Override สาธารณะ int Compare (ผู้ใช้ O1, ผู้ใช้ O2) {ถ้า (o1.getage () <o2.getage ()) return -1; อื่น ๆ ถ้า (o1.getage ()> o2.getage ()) กลับมา 1; Long et = system.nanotime (); System.out.println (ET - BT); System.out.println (us.toString ());แน่นอนที่นี่คุณสามารถรวบรวมและเรียงลำดับ (เรา) โดยตรง ตัวเปรียบเทียบใช้เพื่อเพิ่มประสิทธิภาพวิธีการเปรียบเทียบของผู้ใช้เปรียบเทียบ (การเรียงลำดับคนที่มีอายุเท่ากันตามชื่อผู้ใช้และสตริงการเรียงลำดับ)
พูดถึงง่ายๆการเรียงลำดับอาร์เรย์ใช้การเรียงลำดับการแทรกและการเรียงลำดับและการเรียงลำดับการแทรกโดยตรงเมื่อความยาวอาร์เรย์มีขนาดเล็ก
2) ตั้งค่าการจัดเรียง
ชุดรวมถึง Hashset และ Treeset HashSet ขึ้นอยู่กับ HashMap และ Treeet ขึ้นอยู่กับ Treemap
TreeMap ถูกนำมาใช้โดยใช้ต้นไม้สีแดงและสีดำและมีฟังก์ชั่นการเรียงลำดับตามธรรมชาติ "ฟังก์ชั่นการเรียงลำดับตามธรรมชาติ" หมายความว่ามันมีตัววนซ้ำในการสั่งซื้อจากน้อยไปมาก
แล้วคุณจะจัดเรียง Hashset ได้อย่างไร? เราสามารถแปลง Hashset เป็นรายการและเรียงลำดับด้วยรายการ
ตัวอย่างเช่น:
ตั้งค่า <user> us = new hashset <user> (); // ตั้งค่า <user> us = ใหม่ treeet <ผู้ใช้> (); // set <user> us = new Treeset <user> (ตัวเปรียบเทียบใหม่ <user> () {// // @Override // public int Compare (ผู้ใช้ O1, ผู้ใช้ O2) {// ถ้า (o1.getage () <o2.getage ()) // return -1; o1.getName (). compereto (o2.getName ()); US.ADD (ผู้ใช้ใหม่ ("F5", 12)); US.ADD (ผู้ใช้ใหม่ ("F2", 22)); us.add (ผู้ใช้ใหม่ ("f3", 2)); US.ADD (ผู้ใช้ใหม่ ("F4", 14)); US.ADD (ผู้ใช้ใหม่ ("F5", 32)); US.ADD (ผู้ใช้ใหม่ ("F4", 12)); US.ADD (ผู้ใช้ใหม่ ("F7", 17)); US.ADD (ผู้ใช้ใหม่ ("F8", 52)); // set -> รายการอาร์เรย์ <user> list = new ArrayList <ผู้ใช้> (US); System.out.println (รายการ); collections.sort (รายการ); System.out.println (รายการ);นอกจากนี้คุณยังสามารถแปลง HashSet เป็นอาร์เรย์และเรียงลำดับด้วยอาร์เรย์
3) การจัดเรียงแผนที่
แผนที่รวมถึง hashmap และ treemap ดังที่ได้กล่าวมาแล้ว Treemap ถูกนำไปใช้กับต้นไม้สีแดงและสีดำและมีฟังก์ชั่นการเรียงลำดับตามธรรมชาติ
แล้วคุณจะจัดเรียง HashMap โดย "key" ได้อย่างไร? วิธีนี้ง่ายมากใช้ HashMap เพื่อสร้าง treemap
แผนที่ <สตริง, จำนวนเต็ม> us = new hashmap <string, integer> (); // แผนที่ <สตริง, จำนวนเต็ม> us = ใหม่ treemap <สตริง, จำนวนเต็ม> (); US.put ("F1", 12); US.put ("F2", 13); US.put ("F5", 22); US.put ("F4", 42); US.put ("F3", 15); US.put ("F8", 21); US.put ("F6", 123); US.put ("F7", 1); US.put ("F9", 19); System.out.println (us.toString ()); System.out.println (TreeMap ใหม่ <String, Integer> (US));จะเรียงลำดับโดย "ค่า" ได้อย่างไร?
// เรียงลำดับตามค่า Set <entry <string, integer >> ks = us.entryset (); รายการ <entry <string, integer >> list = new ArrayList <map.entry <String, Integer >> (ks); collections.sort (รายการ, ตัวเปรียบเทียบใหม่ <entry <string, integer >> () {@Override public int Compare (รายการ <สตริง, จำนวนเต็ม> o1, รายการ <สตริง, จำนวนเต็ม> o2) {ถ้า (o1.getValue () <o2.getValue () return -1; System.out.println (รายการ);เสนอรายการของแผนที่เป็นโครงสร้างที่ตั้งไว้จากนั้นแปลงชุดเป็นรายการและเรียงลำดับตามรายการ
การสนทนาสั้น ๆ ข้างต้นเกี่ยวกับปัญหาการเรียงลำดับในคอลเลกชัน Java เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น