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.
@override
Methode 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);
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]
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]
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