تصف هذه المقالة طريقتين للتنفيذ لفرز Java Custom for ArrayList. شاركه للرجوع إليه ، على النحو التالي:
يستخدم تنفيذ الفرز المخصص للقوائم في Java بشكل أساسي طريقتين
1) دع فئة الكائن التي تحتاج إلى فرزها لتنفيذ الواجهة المماثلة ، وتجاوز طريقة المقارنة (إلى) ، وتحديد قواعد الفرز فيه. ثم يمكنك الاتصال مباشرة Collections.sort () لفرز صفيف الكائن
طالب الطبقة العامة ينفذ قابلة للمقارنة {private int id ؛ عصر INT الخاص ؛ ارتفاع int الخاص اسم السلسلة الخاصة ؛ الطالب العام (int id ، اسم السلسلة ، int ، int height) {this.id = id ؛ this.name = name ؛ this.age = العمر ؛ this.height = الارتفاع ؛ } public int getId () {return id ؛ } public int getage () {return Age ؛ } public int getheight () {return height ؛ } السلسلة العامة getName () {return name ؛ } public void setId (int id) {this.id = id ؛ } public void setage (int age) {this.age = age ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public void setheight (int height) {this.height = height ؛ } Override public int compareto (object o) {student s = (student) o ؛ if (this.age> s.age) {return 1 ؛ } آخر إذا (this.age <s.age) {return -1 ؛ } آخر {if (this.height> = s.height) {return 1 ؛ } آخر {return -1 ؛ }}}}فئة الاختبار:
استيراد java.util.*؛ اختبار الفئة العامة {public static void printData (قائمة <Student> list) {for (الطالب الطالب: قائمة) {system.out.println ("رقم الطالب:" + student.getID () + "الاسم:" }} public static void main (string [] args) {list <studtude> list = new ArrayList <> () ؛ list.add (طالب جديد (1 ، "A" ، 20 ، 180)) ؛ list.add (طالب جديد (2 ، "B" ، 21 ، 175)) ؛ list.add (طالب جديد (3 ، "C" ، 22 ، 190)) ؛ List.add (طالب جديد (4 ، "D" ، 21 ، 170)) ؛ list.add (طالب جديد (5 ، "E" ، 20 ، 185)) ؛ System.out.println ("قبل الفرز") ؛ printData (قائمة) ؛ collections.sort (قائمة) ؛ system.out.println ("بعد العمر والارتفاع فرز") ؛ printData (قائمة) ؛ }}نتيجة:
قبل الفرز رقم الطالب: 1 الاسم: A AGE 20 الارتفاع: 180 رقم الطالب: 2 الاسم: B العمر 21 الارتفاع: 175 رقم الطالب: 3 الاسم: C Age 22 الارتفاع: 190 رقم الطالب: 4 الاسم: D 21 Age: 170 Number Number: 5 Name: Egen Egen: 185 asher: d age age: d asher study: 1 age: a age 20 steed leigh الاسم: B العمر 21 الارتفاع: 175 رقم الطالب: 3 الاسم: C العمر 22 الارتفاع: 190
2) قم بتنفيذ مقارنة واجهة المقارنة ، وإعادة كتابة طريقة المقارنة ، وقم بتمريرها إلى الفرز كمعلمة
طالب الطبقة العامة {private int id ؛ عصر INT الخاص ؛ ارتفاع int الخاص اسم السلسلة الخاصة ؛ الطالب العام (int id ، اسم السلسلة ، int ، int height) {this.id = id ؛ this.name = name ؛ this.age = العمر ؛ this.height = الارتفاع ؛ } public int getId () {return id ؛ } public int getage () {return Age ؛ } public int getheight () {return height ؛ } السلسلة العامة getName () {return name ؛ } public void setId (int id) {this.id = id ؛ } public void setage (int age) {this.age = age ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public void setheight (int height) {this.height = height ؛ }}فئة الاختبار:
استيراد java.util.*؛ اختبار الفئة العامة {public static void printData (قائمة <Student> list) {for (الطالب الطالب: قائمة) {system.out.println ("رقم الطالب:" + student.getID () + "الاسم:" }} public static void main (string [] args) {list <studtude> list = new ArrayList <> () ؛ list.add (طالب جديد (1 ، "A" ، 20 ، 180)) ؛ list.add (طالب جديد (2 ، "B" ، 21 ، 175)) ؛ list.add (طالب جديد (3 ، "C" ، 22 ، 190)) ؛ List.add (طالب جديد (4 ، "D" ، 21 ، 170)) ؛ list.add (طالب جديد (5 ، "E" ، 20 ، 185)) ؛ System.out.println ("قبل الفرز") ؛ printData (قائمة) ؛ collections.sort (قائمة ، مقارن جديد <STUTROM> () {Override public int (الطالب O1 ، الطالب O2) {if (o1.getage ()> = o2.getage ()) {return 1 ؛} else {return -1 ؛}}}) ؛ System.out.println ("بعد العمر فرز") ؛ printData (قائمة) ؛ collections.sort (قائمة ، مقارن جديد <STUTROM> () {Override public int (الطالب O1 ، الطالب O2) {if (o1.getage ()> o2.getage ()) {return 1 ؛} آخر else {return -1 ؛ system.out.println ("بعد العمر والارتفاع فرز") ؛ printData (قائمة) ؛ }}نتيجة الإخراج:
قبل فرز رقم الطالب: 1 الاسم: A Age 20 الارتفاع: 180 رقم الطالب: 2 الاسم: B العمر 21 الارتفاع: 175 رقم الطالب: 3 الاسم: C العمر 22 الارتفاع: 190 رقم الطالب: 4 الاسم: D العمر 21 الارتفاع: 170 رقم الطالب: 5 الاسم: Egen 20 الارتفاع: 185 بعد سن المرتبة: العمر 21 الارتفاع: 170 رقم الطالب: 3 الاسم: C العمر 22 الطول: 190 بعد العمر والارتفاع المرتبة رقم الطالب: 1 الاسم: A Age 20 الارتفاع: 180 رقم الطالب: 5 الاسم: E Age Engle: 185 رقم الطالب: 4 الاسم: D العمر 21 الارتفاع: 170 رقم الطالب: 2 الاسم 21
من الأمثلة أعلاه ، يمكننا أن نرى أن الفرز مستقر. نظرت إلى الكود المصدري Collections.sort Java.sort. يتم تنفيذه بالفعل على أساس فرز الدمج المستقر والفرز. كما تم تحسينه داخليًا ، يسمى تيمسبورت. (ل timsort ، يرجى الرجوع إلى https://baike.baidu.com/item/timsort؟fr=aladdin)
ملاحظة: هنا أداة عرض للرجوع إليها:
عرض توضيحي للرسوم المتحركة عبر الإنترنت أدخل/حدد/فقاعة/دمج/هيل/أداة عملية خوارزمية الفرز السريع:
http://tools.vevb.com/aideddesign/paixu_ys
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.