Heim  >  Artikel  >  Java  >  Wie sortiert die Methode Arrays.sort() in Java Arrays nach einem benutzerdefinierten Komparator?

Wie sortiert die Methode Arrays.sort() in Java Arrays nach einem benutzerdefinierten Komparator?

王林
王林Original
2023-11-18 11:36:57933Durchsuche

Wie sortiert die Methode Arrays.sort() in Java Arrays nach einem benutzerdefinierten Komparator?

Wie sortiert die Methode Arrays.sort() in Java ein Array nach einem benutzerdefinierten Komparator?

In Java ist die Methode Arrays.sort() eine sehr nützliche Methode zum Sortieren von Arrays. Standardmäßig sortiert diese Methode in aufsteigender Reihenfolge. Aber manchmal müssen wir das Array nach unseren eigenen definierten Regeln sortieren. Zu diesem Zeitpunkt müssen Sie einen benutzerdefinierten Komparator (Komparator) verwenden.

Ein benutzerdefinierter Komparator ist eine Klasse, die die Comparator-Schnittstelle implementiert, die Vergleichsregeln entsprechend spezifischer Anforderungen definieren kann. Benutzerdefinierte Komparatoren können Objekte jeder Art sortieren, einschließlich Basistypen und benutzerdefinierter Typen.

Als nächstes werde ich vorstellen, wie man einen benutzerdefinierten Komparator zum Sortieren der Arrays.sort()-Methode in Java verwendet, und einige Beispielcodes zur Veranschaulichung bereitstellen.

  1. Wie definiere ich einen benutzerdefinierten Komparator?

Um einen benutzerdefinierten Komparator zu definieren, müssen Sie nur die Comparator-Schnittstelle implementieren und die Vergleichsmethode überschreiben. Die Vergleichsmethode hat zwei Parameter. Die Vergleichsregeln haben die folgenden Situationen:

    obj2, Rückgabe einer negativen Ganzzahl; obj1 > obj2, gibt eine positive Ganzzahl zurück
  • Der Schlüsselcode lautet wie folgt:
  • public class MyComparator implements Comparator<T> {
        @Override
        public int compare(T o1, T o2) {
            // 你的自定义比较规则
            return 0;
        } 
    }
  • Wie verwende ich einen benutzerdefinierten Komparator, um ein Array zu sortieren?

Die Methode Arrays.sort() verfügt über mehrere überladene Versionen, von denen eine einen benutzerdefinierten Komparator akzeptiert. Als zweiten Parameter dieser Methode können wir unseren eigenen definierten Komparator verwenden, sodass wir das Array nach unseren eigenen Regeln sortieren können.
  1. Der Schlüsselcode lautet wie folgt:
  2. public static <T> void sort(T[] a, Comparator<? super T> c) 
Unter ihnen stellt T[] a das zu sortierende Array dar, Comparator super T>

Beispielcode

Schauen wir uns nun ein konkretes Beispiel an. Angenommen, wir haben eine Schülerklasse. Diese Klasse enthält zwei Mitgliedsvariablen. Wenn wir nun das Student-Array vom kleinsten zum größten Alter sortieren möchten, müssen wir einen benutzerdefinierten Komparator definieren. Der Beispielcode lautet wie folgt:
    public class StudentComparator implements Comparator<Student> {
        @Override
        public int compare(Student o1, Student o2) {
            return o1.age - o2.age;
        } 
    }
  1. Im obigen Code definieren wir eine StudentComparator-Klasse, die die Comparator-Schnittstelle implementiert und die Vergleichsmethode überschreibt. Bei der Vergleichsmethode konzentrieren wir uns beim Vergleich auf das Alter. Wenn das Alter von o1 kleiner als das Alter von o2 ist, wird eine negative ganze Zahl zurückgegeben. Wenn das Alter von o1 gleich dem Alter von o2 ist, wird 0 zurückgegeben. Wenn das Alter von o1 größer als das Alter von o2 ist, wird eine positive ganze Zahl zurückgegeben.
Als nächstes können wir die Methode Arrays.sort() verwenden, um das Student-Array gemäß den von uns definierten Regeln zu sortieren.

public class Main {
    public static void main(String[] args) {
        Student[] students = new Student[3];
        students[0] = new Student("Tom", 20);
        students[1] = new Student("Jack", 18);
        students[2] = new Student("Lucy", 22);
        
        Arrays.sort(students, new StudentComparator());
        
        for (Student student : students) {
            System.out.println(student.name + " " + student.age);
        }
    }
}

Das Ausgabeergebnis ist:

Jack 18
Tom 20
Lucy 22

Wie aus dem Ergebnis ersichtlich ist, wird das Student-Array gemäß den von uns definierten Regeln von klein nach groß nach Alter sortiert.

Zusammenfassung

Die Methode Arrays.sort() ist eine sehr nützliche Methode, mit der jede Art von Array sortiert werden kann. Wenn Sie das Array nach Ihren eigenen definierten Regeln sortieren müssen, müssen Sie nur die Comparator-Schnittstelle implementieren und die Vergleichsmethode überschreiben. Der spezifische Implementierungsprozess ist wie oben erwähnt. Ich hoffe, dass er für alle hilfreich sein wird.

    Das obige ist der detaillierte Inhalt vonWie sortiert die Methode Arrays.sort() in Java Arrays nach einem benutzerdefinierten Komparator?. 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