Essayez de trier le tableau par ordre croissant afin que le premier élément du tableau soit compris entre 20,30,10 et 10,20,30 comme suit:
[20, 3] [10, 2] [30, 1] → [20, 3] [10, 2] [30, 1]
Les listes qui ont un tableau comme élément peuvent être triées à l'aide de Comparator en Java. (D'autres types lambda peuvent être utilisés.)
Comparator
Comparator<int[]> comparator = new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return Integer.compare(o1[0], o2[0]);
}
};
Vous pouvez utiliser une classe qui implémente l'interface Comparator pour créer quelque chose comme un critère de comparaison des grandeurs. Ceci définit une comparaison de taille du tableau.
comparator<int[]> comparator = new comparator<int[]>() {};
Dans la partie, créez une instance de la classe qui implémente l'interface de comparateur et définissez la méthode en même temps.Classe anonymeEst utilisé.
@override
Méthode étantpublic int compare(int[] o1,int[] o2) {}
Définit une méthode de comparaison qui compare la magnitude de o1 et o2 d'un tableau de type int.
return Integer.compare(o1[0], o2[0])En fonction de la taille des tableaux de type int o1 et o2, o1[0]Et o2[0]Il a été défini par la taille de.
À partir de ce qui précède, nous avons pu générer un comparateur avec la taille du 0ème élément du tableau comme critère pour la taille du tableau.
Vous pouvez trier une liste avec un tableau comme élément en ajoutant le comparateur que vous avez défini précédemment à l'argument de tri.
```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]
Il apparaît souvent dans AtCoder.
Recommended Posts