Heim >Java >javaLernprogramm >Wie sortiere ich ArrayList-Objekte nach Datum in Java?
ArrayList-Objekte nach Datum sortieren
Beim Organisieren von Daten in ArrayList-Objekten kann es erforderlich sein, die Elemente nach Datum statt alphabetisch zu sortieren . Dieser Artikel bietet Lösungen, um dies mit Objektkomparatoren und On-the-Fly-Komparatoren zu erreichen.
Implementieren von Objektkomparatoren
Um Objekte nach Datum vergleichbar zu machen, definieren Sie einen Benutzerdefiniert Komparatorklasse, die die Comparable-Schnittstelle implementiert. Überschreiben Sie innerhalb dieser Klasse die Methode „compareTo“, um die DateTime-Objekte der beiden Objekte zu vergleichen. Zum Beispiel:
public static class MyObject implements Comparable<MyObject> { private Date dateTime; public Date getDateTime() { return dateTime; } public void setDateTime(Date datetime) { this.dateTime = datetime; } @Override public int compareTo(MyObject o) { return getDateTime().compareTo(o.getDateTime()); } }
Sortieren Sie dann die ArrayList mit Collections.sort:
Collections.sort(myList);
Erstellen von On-the-Fly-Komparatoren
Manchmal ist eine Änderung des Objektmodells nicht möglich. Erstellen Sie in solchen Fällen einen On-the-Fly-Komparator mit einer anonymen inneren Klasse oder einem Lambda-Ausdruck:
Collections.sort(myList, new Comparator<MyObject>() { public int compare(MyObject o1, MyObject o2) { return o1.getDateTime().compareTo(o2.getDateTime()); } });
Umgang mit Nullwerten
Um Stabilität zu gewährleisten, behandeln Sie Nullwerte innerhalb des Komparators, indem 0 für Nullwerte zurückgegeben wird:
public static class MyObject implements Comparable<MyObject> { private Date dateTime; public Date getDateTime() { return dateTime; } public void setDateTime(Date datetime) { this.dateTime = datetime; } @Override public int compareTo(MyObject o) { if (getDateTime() == null || o.getDateTime() == null) return 0; return getDateTime().compareTo(o.getDateTime()); } }
Oder im laufenden Betrieb Komparator:
Collections.sort(myList, new Comparator<MyObject>() { public int compare(MyObject o1, MyObject o2) { if (o1.getDateTime() == null || o2.getDateTime() == null) return 0; return o1.getDateTime().compareTo(o2.getDateTime()); } });
Durch die Implementierung dieser Techniken können Sie ArrayList-Objekte effizient nach Datum sortieren, sei es durch Ändern des Objektmodells oder durch die Verwendung von On-the-Fly-Komparatoren.
Das obige ist der detaillierte Inhalt vonWie sortiere ich ArrayList-Objekte nach Datum in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!