Heim >Java >javaLernprogramm >Wie kann ich ein Java-Array von Objekten nach mehreren Feldern sortieren?
Sortieren von Arrays nach mehreren Feldern in Java
Bei der Arbeit mit Arrays von Objekten besteht häufig die Notwendigkeit, diese anhand mehrerer Kriterien zu sortieren. In diesem Fall besteht die Aufgabe darin, ein Array von Personenobjekten alphabetisch nach Namen und dann nach Alter zu sortieren.
Lösung 1: Verwendung eines benutzerdefinierten Komparators
Ein Ansatz ist um einen benutzerdefinierten Komparator zum Definieren der Sortierkriterien zu verwenden. Diese Klasse implementiert die Comparator-Schnittstelle und überschreibt die Vergleichsmethode, um die gewünschte Sortierlogik anzugeben.
Hier ist ein Codeausschnitt, der diesen Ansatz demonstriert:
private static void order(List<Person> persons) { Collections.sort(persons, new Comparator() { public int compare(Object o1, Object o2) { String x1 = ((Person) o1).getName(); String x2 = ((Person) o2).getName(); int sComp = x1.compareTo(x2); if (sComp != 0) { return sComp; } Integer x1 = ((Person) o1).getAge(); Integer x2 = ((Person) o2).getAge(); return x1.compareTo(x2); } }); }
Dieser Komparator vergleicht zunächst die Namen der Personenobjekte und wenn sie gleich sind, werden ihre Objekte verglichen Alter.
Methode: Collections.sort
Algorithmus: Merge Sort (verwendet von Arrays.sort)
Zeitkomplexität: O(n log n)
Vorteil:Ermöglicht flexible Sortierkriterien.
Das obige ist der detaillierte Inhalt vonWie kann ich ein Java-Array von Objekten nach mehreren Feldern sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!