Sortieren nach mehreren Feldern in Java
Das Sortieren von Daten ist eine häufige Aufgabe in Java, insbesondere bei der Arbeit mit komplexen Objekten. Beim Sortieren nach mehreren Feldern ist die Reihenfolge der Vorgänge entscheidend. Betrachten wir ein Szenario:
Herausforderung:
Wie können Sie bei einem gegebenen Array von Personenobjekten mit den Attributen „Alter“ und „Name“ dieses Array alphabetisch nach Name und dann nach Alter sortieren? ? Welcher Algorithmus wäre für diese Aufgabe geeignet?
Lösung:
Um eine Sammlung von Objekten nach mehreren Feldern zu sortieren, bietet Java Collections.sort. Dies kann mithilfe eines Komparators zur Definition der Sortierlogik erreicht werden. So können Sie es umsetzen:
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 Sortieralgorithmus vergleicht zunächst die Namen der Objekte. Wenn die Namen gleich sind, wird ihr Alter verglichen. Die Methode „compareTo“ wird sowohl für String- als auch für Ganzzahlvergleiche verwendet.
Algorithmus:
Der hier verwendete Algorithmus ist eine Mischung aus Merge-Sort und Quicksort. Collections.sort nutzt eine Variante von Timsort, einem effizienten hybriden Sortieralgorithmus, der sich die Tatsache zunutze macht, dass das Array teilweise nach Namen sortiert ist.
Ergebnis:
Beim Ausführen der Bestellmethode wird die bereitgestellte Liste der Personenobjekte alphabetisch nach Name und dann nach Alter sortiert.
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein Java-Array von Objekten nach mehreren Feldern (Name, dann Alter)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!