Heim > Java > javaLernprogramm > Wie sortiere ich ein Java-Array von Objekten nach mehreren Feldern (Name, dann Alter)?

Wie sortiere ich ein Java-Array von Objekten nach mehreren Feldern (Name, dann Alter)?

Susan Sarandon
Freigeben: 2024-12-19 00:38:13
Original
678 Leute haben es durchsucht

How to Sort a Java Array of Objects by Multiple Fields (Name then Age)?

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);
    }});
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage