Heim >Java >javaLernprogramm >Wie kann ich ein Java-Array von Objekten nach mehreren Feldern sortieren?

Wie kann ich ein Java-Array von Objekten nach mehreren Feldern sortieren?

DDD
DDDOriginal
2024-12-23 04:39:47367Durchsuche

How Can I Sort a Java Array of Objects by Multiple Fields?

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!

Stellungnahme:
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