Tri d'une liste avec un tableau de type int comme élément (Java) (Comparator)

Trier une liste avec un tableau de type int comme élément

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é.

@overrideMé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);

Exemple d'exécution

Basé sur le 0e élément

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]

Basé sur le premier élément

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]

Basé sur le 0e élément, par ordre décroissant

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

Tri d'une liste avec un tableau de type int comme élément (Java) (Comparator)
Convertir un tableau de chaînes en une liste d'entiers en Java
Élément Java effectif 25 Sélectionnez une liste dans un tableau Première moitié
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
[Java] Comment transformer un tableau à deux dimensions avec une instruction for étendue
Je veux ForEach un tableau avec une expression Lambda en Java
[Java] Créer une collection avec un seul élément
[Java] Récupère des valeurs de manière aléatoire dans un tableau
Tri à l'aide du comparateur java
A propos de la liste des baies Java
Implémentez rapidement singleton avec enum en Java
Je veux faire une liste avec kotlin et java!
Lire les données WAV sous forme de tableau d'octets sur Android Java
[Java] Conversion de type de liste / type de tableau
[Java] L'ajout d'un élément à la collection provoque une erreur de compilation
[Java] Copie superficielle et copie complète lors de la conversion d'un tableau en liste
Créer une classe immuable avec JAVA
Expression lambda Java apprise avec Comparator
Construire un projet Java avec Gradle
Mémo d'apprentissage Java (création d'un tableau)
Trier la liste des objets Java
[Java] Vérification de l'existence des éléments avec Stream
[Java] Déclarer et initialiser un tableau
Créer une carte de liste avec LazyMap
[Java] Conversion d'un tableau à une liste
Exécuter des applications écrites en Java8 en Java6
Comment créer un tableau Java
Liste de conversion mutuelle de tableau / liste / flux Java
Conversion de liste Java8 avec Stream map
Obtenir une liste de fichiers S3 avec ListObjectsV2Request (AWS SDK for Java)
Appelle la chaîne de caractères passée comme argument en tant que méthode avec send
Comment créer une application avec un mécanisme de plug-in [C # et Java]