مثال 1
نسخة الكود كما يلي:
حزمة com.yonyou.test ؛
استيراد java.util.arraylist ؛
استيراد java.util.collections ؛
استيراد java.util.comparator ؛
استيراد java.util.list ؛
اختبار الفئة العامة {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
الطالب ZLJ = طالب جديد ("Ding Xiaoyu" ، 21) ؛
الطالب dxy = طالب جديد ("Zhao Si" ، 22) ؛
الطالب CJC = طالب جديد ("Zhang San" ، 11) ؛
الطالب LGC = طالب جديد ("Liu Wu" ، 19) ؛
قائمة <Tudture> StudentList = New ArrayList <Tudent> () ؛
StudentList.add (ZLJ) ؛
StudentList.add (dxy) ؛
StudentList.add (CJC) ؛
StudentList.add (LGC) ؛
System.out.println ("مرتبة حسب السنة:") ؛
collections.sort (StudentList ، New SortByage ()) ؛
ل (الطالب الطالب: الطالب) {
System.out.println (student.getName () + " /" + student.getage ()) ؛
}
System.out.println ("===========") ؛
System.out.println ("فرز بالاسم") ؛
collections.sort (StudentList ، New SortByName ()) ؛
ل (الطالب الطالب: الطالب) {
System.out.println (student.getName () + " /" + student.getage ()) ؛
}
}
}
فئة sortbyage تنفذ المقارنة {
Public Int Compare (Object O1 ، Object O2) {
الطالب S1 = (الطالب) O1 ؛
الطالب S2 = (الطالب) O2 ؛
if (s1.getage ()> s2.getage ())
العودة 1 ؛
آخر if (s1.getage () == s2.getage ()) {
العودة 0 ؛
}
العودة -1 ؛
}
}
فئة sortbyName تنفذ المقارنة {
int العامة مقارنة (الكائن O1 ، كائن O2) {
الطالب S1 = (الطالب) O1 ؛
الطالب S2 = (الطالب) O2 ؛
if (s1.getName (). compareto (s2.getName ()) <0)
العودة -1 ؛
وإلا إذا
العودة 1 ؛
}
العودة 0 ؛
}
}
طالب الفصل {
عصر INT الخاص ؛
اسم السلسلة الخاصة ؛
الجمهور int getage () {
عودة العمر ؛
}
public void setage (int age) {
this.age = العمر ؛
}
السلسلة العامة getName () {
اسم العودة
}
public void setName (اسم السلسلة) {
this.name = name ؛
}
الطالب العام (اسم السلسلة ، العصر الباحث) {
this.age = العمر ؛
this.name = name ؛
}
}
مثال 2
غالبًا ما أواجه مشكلات مع فرز الصفيف.
في الواقع ، غالبًا ما يتم مواجهة هذا الموقف.
يرد الرمز المصدر أدناه:
1: person.java ملف:
نسخة الكود كما يلي:
شخص من الطبقة العامة {
اسم السلسلة
عمري
الشخص العمومي (اسم السلسلة ، العصر الباحث) {
this.name = name ؛
this.age = العمر ؛
}
الجمهور int getage () {
عودة العمر ؛
}
public void setage (int age) {
this.age = العمر ؛
}
السلسلة العامة getName () {
اسم العودة
}
public void setName (اسم السلسلة) {
this.name = name ؛
}
}
2: MyComparator.java
نسخة الكود كما يلي:
// تنفيذ واجهة المقارنة ، أي تحديد قواعد الفرز ، يمكنك تحديد أي قواعد تقريبًا
حزمة com.infoearth ؛
استيراد java.util.*؛
الطبقة العامة MyComparator تنفذ المقارنة {
Public Int Compare (Object O1 ، Object O2) {
الشخص p1 = (شخص) O1 ؛
الشخص p2 = (شخص) O2 ؛
إذا (p1.age <p2.age)
العودة 1 ؛
آخر
العودة 0 ؛
}
}
3: listsort.java
نسخة الكود كما يلي:
حزمة com.infoearth ؛
استيراد java.util.arraylist ؛
استيراد java.util.collections ؛
استيراد java.util.comparator ؛
قوائم الفئة العامة {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
قائمة ArrayList = new ArrayList () ؛
list.add (شخص جديد ("LCL" ، 28)) ؛
list.add (شخص جديد ("FX" ، 23)) ؛
list.add (شخص جديد ("WQX" ، 29)) ؛
Comparator comp = new MyComparator () ؛
collections.sort (قائمة ، شركات) ؛
لـ (int i = 0 ؛ i <list.size () ؛ i ++) {
الشخص p = (الشخص) list.get (i) ؛
System.out.println (p.getName ()) ؛
}
}
}
بالطبع ، إذا كانت قائمتك ملفوفة في نوع أساسي أو سلسلة ، فقط collections.sort (قائمة) ؛