نناقش هنا فرز القائمة والتعيين والخريطة ، بما في ذلك الفرز حسب قيمة الخريطة.
1) قائمة الفرز
يمكن للفرز القائمة استخدام طريقة الفرز للمجموعات مباشرة ، أو طريقة فرز المصفوفات. في التحليل النهائي ، تتمثل المجموعات في استدعاء طريقة الفرز للصفائف.
STATIC STATIC <T> void sort (list <t> list ، apportator <؟ super t> c) {object [] a = list.toarray () ؛ المصفوفات. ListIratorator i = list.listIterator () ؛ لـ (int j = 0 ؛ j <a.length ؛ j ++) {i.next () ؛ i.set (a [j]) ؛ }}إذا كان كائنًا مخصصًا ، فأنت بحاجة إلى تنفيذ الواجهة المماثلة بحيث يكون للكائن نفسه وظيفة "المقارنة". بالطبع ، يمكننا أيضًا استخدام المقارنة خارجيًا لتحديد فرزه.
على سبيل المثال:
حزمة com.fox ؛ /** * Author Huangfox * desc */مستخدم الفئة العامة ينفذ <suster> {اسم السلسلة الخاصة ؛ عصر INT الخاص ؛ user user () {} المستخدم العام (اسم السلسلة ، int age) {super () ؛ this.name = name ؛ this.age = العمر ؛ } Override Public String ToString () {return "الاسم:" + name + "، العمر:" + Age ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public int getage () {return Age ؛ } public void setage (int age) {this.age = age ؛ } Override public int compareto (user o) {if (o.age <this.age) return 1 ؛ آخر إذا (O.Age> this.age) return -1 ؛ عودة أخرى 0 ؛ } / ** * param args * / public static void main (string [] args) {user u1 = new user ("fox" ، 11) ؛ المستخدم U2 = مستخدم جديد ("Fox2" ، 21) ؛ system.out.println (u2.compareto (u1)) ؛ }}فرز بواسطة:
// list <Ser> us = new ArrayList <Sether> () ؛ قائمة <Sether> us = new LinkedList <Sether> () ؛ 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 ()) ؛ long bt = system.nanotime () ؛ Collections.sort (US ، New Cookerator <Seter> () {Override Public int (user o1 ، user o2) {if (o1.getage () <o2.getage ()) return -1 ؛ else (o1.getage ()> o2.getage ()) إرجاع 1 ؛ مرة أخرى o1.getName () Long et = system.nanotime () ؛ system.out.println (et - bt) ؛ system.out.println (us.toString ()) ؛بالطبع ، هنا يمكنك جمع وفرز مباشرة (نحن). يتم استخدام المقارنة لتحسين طريقة المقارنة الخاصة بالمستخدم (فرز الأشخاص من نفس العمر وفقًا لاسم المستخدم وسلسلة الفرز).
لذكر ببساطة ، يستخدم فرز المصفوفات فرز الإدراج ودمج الفرز ، وفرز الإدراج مباشرة عندما يكون طول الصفيف صغيرًا.
2) تعيين الفرز
المجموعة تشمل hashset و treeset. تعتمد Hashset على HashMap وتستند Treeset على Treemap.
يتم تنفيذ Treemap باستخدام الأشجار الحمراء والأسود ، وبطبيعة الحال لديه وظيفة الفرز. "من الطبيعي أن يكون له وظيفة الفرز" أن لديها تكرار في ترتيب تصاعدي ومتنحنى.
فكيف يمكنك فرز hashset؟ يمكننا تحويل hashset إلى قائمة وفرزها بالقائمة.
على سبيل المثال:
اضبط <Sether> us = new Hashset <Sether> () ؛ // set <Ser> us = new Treeset <Sether> () ؛ // set <Ser> us = new Treeset <Sether> (New Paratator <Seter> () {// // override // public int compare (user o1 ، user o2) {// if (o1.getage () <o2.getage ()) // return -1 ؛ O1.GetName (). Compareto (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 -> قائمة Array <Sether> list = new ArrayList <Sether> (US) ؛ system.out.println (list) ؛ collections.sort (قائمة) ؛ system.out.println (list) ؛يمكنك أيضًا تحويل Hashset إلى صفيف وفرزها بالمصفوفات.
3) فرز الخريطة
تتضمن الخريطة HashMap و Treemap. كما ذكر أعلاه ، يتم تنفيذ Treemap مع الأشجار الحمراء والأسود وله وظائف الفرز بشكل طبيعي.
فكيف يمكنك فرز hashmap بواسطة "مفتاح"؟ هذه الطريقة بسيطة للغاية ، استخدم hashmap لبناء treemap.
الخريطة <string ، integer> us = new hashmap <string ، integer> () ؛ // map <string ، integer> us = new treemap <string ، integer> () ؛ 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 (tremap جديد <string ، integer> (الولايات المتحدة)) ؛كيف ترسل بـ "القيمة"؟
// sorte by value set <intrad <string ، integer >> ks = us.entryset () ؛ قائمة <الإدخال <string ، integer >> list = new ArrayList <map.entry <string ، integer >> (ks) ؛ collections.sort (قائمة ، مقارن جديد <الإدخال <string ، integer >> () {Override public int compare (entrate <string ، integer> o1 ، intrad <string ، integer> o2) {if (o1.getValue () <o2.getValue ()) return -1 ؛ els (o1.getvalue () system.out.println (list) ؛اقترح إدخال الخريطة في بنية محددة ، ثم قم بتحويل المجموعة إلى قائمة ، وأخيراً فرزها وفقًا للقائمة.
المناقشة الموجزة أعلاه حول مشكلة الفرز في مجموعة Java هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.