Mengisih Objek dalam ArrayList mengikut Tarikh
Walaupun banyak contoh menunjukkan pengisihan mengikut abjad dalam ArrayLists, pengisihan mengikut tarikh memberikan cabaran yang unik. Setiap objek dalam ArrayList mungkin mengandungi objek DateTime, yang mempunyai fungsi lt() dan lteq() untuk perbandingan kurang daripada dan kurang daripada atau sama. Untuk menyelesaikan dilema pengisihan ini, pertimbangkan pendekatan berikut:
1. Melaksanakan Antara Muka Sebanding:
Buat kelas objek tersuai yang melaksanakan antara muka Sebanding. Gantikan kaedah compareTo() untuk membandingkan objek DateTime bagi dua objek.
public class MyObject implements Comparable<MyObject> { private Date dateTime; @Override public int compareTo(MyObject o) { return dateTime.compareTo(o.dateTime); } }
2. Menggunakan Pembanding:
Jika mengubah suai model objek tidak diingini, buat pembanding dengan cepat:
Collections.sort(myList, new Comparator<MyObject>() { @Override public int compare(MyObject o1, MyObject o2) { return o1.getDateTime().compareTo(o2.getDateTime()); } });
Mengendalikan Nilai Null:
Untuk mengelakkan NullPointerExceptions, kendalikan objek DateTime nol dalam kaedah compareTo() atau pembanding:
@Override public int compareTo(MyObject o) { if (dateTime == null || o.dateTime == null) return 0; return dateTime.compareTo(o.dateTime); }
Collections.sort(myList, new Comparator<MyObject>() { @Override public int compare(MyObject o1, MyObject o2) { if (o1.getDateTime() == null || o2.getDateTime() == null) return 0; return o1.getDateTime().compareTo(o2.getDateTime()); } });
Dengan melaksanakan penyelesaian ini, anda boleh mengisih ArrayList objek anda mengikut tarikh, mendayakan operasi berasaskan tarikh yang cekap.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih ArrayList Objek mengikut Tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!