Sortieren einer Liste mit einem Array vom Typ int als Element (Java) (Comparator)

Sortieren einer Liste mit einem Array vom Typ int als Element

Versuchen Sie, das Array in aufsteigender Reihenfolge so zu sortieren, dass das erste Element des Arrays wie folgt von 20,30,10 bis 10,20,30 reicht:

[20, 3]     [10, 2] [30, 1] → [20, 3] [10, 2]     [30, 1]

Listen mit einem Array als Element können mit Comparator in Java sortiert werden. (Andere Lambda-Typen können verwendet werden.)

Comparator

Comparator<int[]> comparator = new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o1[0], o2[0]);
    }
};

Sie können eine Klasse verwenden, die die Comparator-Schnittstelle implementiert, um so etwas wie ein Kriterium zum Vergleichen von Größen zu erstellen. Dies definiert einen Größenvergleich des Arrays.

comparator<int[]> comparator = new comparator<int[]>() {};Erstellen Sie im Teil eine Instanz der Klasse, die die Vergleichsschnittstelle implementiert, und definieren Sie gleichzeitig die Methode.Anonyme KlasseWird genutzt.

@overrideMethode zu seinpublic int compare(int[] o1,int[] o2) {} Definiert eine Vergleichsmethode, die die Größe von o1 und o2 eines Arrays vom Typ int vergleicht.

return Integer.compare(o1[0], o2[0])Abhängig von der Größe der Int-Typ-Arrays o1 und o2, o1[0]Und o2[0]Es wurde durch die Größe von definiert.



 Aus dem Obigen konnten wir einen Komparator mit der Größe des 0. Elements des Arrays als Kriterium für die Größe des Arrays generieren.

 Sie können eine Liste mit einem Array als Element sortieren, indem Sie den zuvor definierten Vergleicher zum Sortierargument hinzufügen.

```java
Collections.sort(list, comparator);

Ausführungsbeispiel

Basierend auf dem 0. Element

List<int[]> list = new ArrayList<int[]>();
int[] a = {20, 3};
int[] b = {30, 1};
int[] c = {10, 2};
list.add(a);
list.add(b);
list.add(c);

//[20, 3]
//[30, 1]
//[10, 2]

Comparator<int[]> comparator = new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o1[0], o2[0]);
    }
};

Collections.sort(list, comparator);

for (int i=0;i<list.size();i++) {
	System.out.println(Arrays.toString(list.get(i)));
}

//[10, 2]
//[20, 3]
//[30, 1]

Basierend auf dem ersten Element

Comparator<int[]> comparator = new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o1[1], o2[1]);
    }
};

Collections.sort(list, comparator);

//[30, 1]
//[10, 2]
//[20, 3]

Basierend auf dem 0. Element in absteigender Reihenfolge

Comparator<int[]> comparator = new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o2[0], o1[0]);
    }
};

Collections.sort(list, comparator);

//[30, 1]
//[20, 3]
//[10, 2]

Es erscheint oft in AtCoder.

Recommended Posts

Sortieren einer Liste mit einem Array vom Typ int als Element (Java) (Comparator)
Verwandeln Sie ein Array von Strings in eine Liste von Ganzzahlen in Java
Effektives Java-Element 25 Wählen Sie eine Liste aus einem Array aus. Erste Hälfte
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
[Java] So drehen Sie ein zweidimensionales Array mit einer erweiterten for-Anweisung
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
[Java] Erstellen Sie eine Sammlung mit nur einem Element
[Java] Ruft Werte zufällig aus einem Array ab
Sortieren mit Java-Komparator
Informationen zur Java-Array-Liste
Implementieren Sie Singleton mit Enum schnell in Java
Ich möchte eine Liste mit Kotlin und Java erstellen!
Lesen Sie WAV-Daten als Byte-Array unter Android Java
[Java] Konvertierung von Listentyp / Array-Typ
[Java] Das Hinzufügen eines Elements zur Sammlung führt zu einem Kompilierungsfehler
[Java] Flache Kopie und tiefe Kopie beim Konvertieren eines Arrays in eine Liste
Erstellen Sie mit JAVA eine unveränderliche Klasse
Java-Lambda-Ausdruck, der mit Comparator gelernt wurde
Erstellen eines Java-Projekts mit Gradle
Java-Lernnotiz (Erstellen eines Arrays)
Liste der Java-Objekte sortieren
[Java] Elementexistenzprüfung mit Stream
[Java] Deklarieren und initialisieren Sie ein Array
Erstellen Sie eine Listenkarte mit LazyMap
[Java] Konvertierung von Array zu Liste
Führen Sie in Java8 geschriebene Anwendungen in Java6 aus
So erstellen Sie ein Java-Array
Java-Array / Liste / Stream gegenseitige Konvertierungsliste
Java8-Listenkonvertierung mit Stream Map
Holen Sie sich eine Liste der S3-Dateien mit ListObjectsV2Request (AWS SDK für Java)
Ruft die als Argument übergebene Zeichenfolge als Methode mit send auf
So erstellen Sie eine App mit einem Plug-In-Mechanismus [C # und Java]