Triez une arrayliste dans Java

<794d708678 ">

Le projet de ce message Vous pouvez le télécharger en appuyant ici.

l’une des fonctionnalités les plus intéressantes lorsque vous travaillez avec des structures de données de type » pile « , » queue « , » liste « , etc. C’est votre ordination. Dans la publication de « tableaux de commande en Java (avec ses indices) » Nous avons mis en place une API qui nous a permis de commander des tableaux et ses indices, ce qui est une fonctionnalité très importante qui n’a pas été mise en œuvre par une API connue et de manière simple.

Dans ce message, nous allons montrer comment commander ArrayList, avec une matrice de données atomique ou avec une arrayliste d’objets.

Pour effectuer ces opérations, nous devrons travailler avec les » collections « de Java. Nous n’allons pas expliquer les caractéristiques de cette classe, mais nous allons simplement l’utiliser pour commander des arraylistes. Comme d’habitude sur ce site Web, nous avons montré cette fonctionnalité avec un exemple:

Nous allons avoir une arraylist appelé « ArrayLisTint » qui est un tableau d’entiers et que nous allons mettre les valeurs suivantes (mais vous savez la méthode ADD, regard sur le poste « arraylist en Java, avec des exemples »):

private static ArrayList arrayListInt = new ArrayList<>();// Guardo datos en el ArrayListarrayListInt.add(3); arrayListInt.add(4);arrayListInt.add(2);arrayListInt.add(6);arrayListInt.add(5);arrayListInt.add(1);arrayListInt.add(7);

Si nous imprimons cette arrayliste dans l’ordre dans lequel nous avons enregistré les éléments, nous aurons que le premier élément sera numéroté « 3 », le deuxième numéro « 6 ‘et si nous suivons La commande, le dernier sera le numéro ‘7’.

Pour commander cette plus grande arrangée, nous utiliserons la méthode « tri » de la classe de collections:

Collections.sort(arrayListInt);

avec cette méthode retournera la flambée ordonnée de moins à plus grande, la sortie étant le prochain (dans le projet que vous pouvez télécharger, vous pouvez voir la méthode imprimant l’arraylist à l’écran):

Pour trier le plus élevé à plus bas, nous devons créer un objet de la classe d’actions pour comparer les éléments et les mettre dans l’ordre inverse. . Nous faisons cela comme suit:

Comparator<Integer> comparador = Collections.reverseOrder();Collections.sort(arrayListInt, comparador);

exécutez cette partie du programme et imprimez la flambée résultante à l’écran, nous avons Le tableau commandé de plus haut à moins:

Posicion(1) = 7Posicion(2) = 6Posicion(3) = 5Posicion(4) = 4Posicion(5) = 3Posicion(6) = 2Posicion(7) = 1
<794d708678 ">

Mais que se passe-t-il si ce que nous avons est une arrayliste d’objets d’un Certains cours et ce que nous voulons commander cette arrachelist pour la valeur d’un certain attribut ?. Eh bien, il y a une solution simple que nous allons montrer ci-dessous et qu’elle consiste à écraser une méthode de la classe de comparaison.
Supposons que nous ayons une classe « personne » dans les éléments suivants:

class Persona {private String nombre;private int edad;public Persona() {}public Persona(String nombre, int edad) {this.nombre = nombre;this.edad = edad;}public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public int getEdad() {return edad;}public void setEdad(int edad) {this.edad = edad;}@Overridepublic String toString() {return this.getNombre() + " - " + this.getEdad();}}

Supposons que nous ayons une arracheListe appelée « personnes » avec les objets suivants de la personne:

private static ArrayList personas = new ArrayList<>();................................personas.add(new Persona("Pepe", 28));personas.add(new Persona("Juan", 32));personas.add(new Persona("Paco", 40));personas.add(new Persona("Susi", 24));personas.add(new Persona("Lola", 20));personas.add(new Persona("Jose", 28));personas.add(new Persona("Dani", 24));personas.add(new Persona("Sara", 36));

Cette arrayliste que nous voulons (de moins que l’âge plus âgé) en fonction de l’âge des personnes, nous devons donc écrire la méthode « Comparer » de la classe de comparaison et Appelez la méthode « tri » de la classe de collections. Nous faisons cela comme suit:

Collections.sort(personas, new Comparator<Persona>() {@Overridepublic int compare(Persona p1, Persona p2) {return new Integer(p1.getEdad()).compareTo(new Integer(p2.getEdad()));}});

Comme nous voyons la méthode « Comparer » consiste à comparer deux âges donnés. Dans ce cas, nous comparons deux attributs de type « entier ». Si nous voulons le faire avec une chaîne, un double, etc. Nous devons juste changer le type de données. Comme une sortie sur ce code, nous avons les suivants:

« 794d708678″>

Si maintenant, nous voulons le trier du moins Il suffit de changer la méthode « Comparer » en réglant la comparaison à l’envers bas:

Collections.sort(personas, new Comparator<Persona>() {@Overridepublic int compare(Persona p1, Persona p2) {// Aqui esta el truco, ahora comparamos p2 con p1 y no al reves como antesreturn new Integer(p2.getEdad()).compareTo(new Integer(p1.getEdad()));}});

à la suite de Cette gestion nous obtenons les éléments suivants:

Posicion(1) = Paco - 40Posicion(2) = Sara - 36Posicion(3) = Juan - 32Posicion(4) = Pepe - 28Posicion(5) = Jose - 28Posicion(6) = Dani - 24Posicion(7) = Susi - 24Posicion(8) = Lola - 20
<794d708678 ">

Ceci est en résumé tout nécessaire pour commander une arrayliste, soit par un attribut de une série d’objets ou de données atomiques (en réalité, ce sont des objets qui représentent des données atomiques, entier, double, etc.). Nous n’avons pas entré en détail pour expliquer les classes de comparaison et de collections, car en principe, le but de ce message est de donner une solution à l’ordination de la graigreur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *