Ordina un arrayList in Java

Il progetto di questo post è possibile scaricarlo premendo qui.

Una delle funzionalità più interessanti quando si lavora con le strutture dati di tipo” Stack “,” coda “,” lista “ecc. È la tua ordinazione. Nel post di “Arrays Order in Java (con i suoi indici)” Abbiamo implementato un’API che ci ha permesso di ordinare gli array e i suoi indici, che è una funzionalità molto importante che non è stata implementata da qualsiasi API conosciuta e in modo semplice.

In questo post mostreremo come ordinare Arraylist, sia con un array di dati atomico o con un array di un array di oggetti.

Per eseguire queste operazioni, avremo bisogno di lavorare con la classe” Collections “di Java. Non spiegheremo le caratteristiche di questa classe, ma lo usiamo semplicemente per ordinare gli Arraylist. Come al solito su questo sito Web, siamo andati avanti per mostrare questa funzionalità con un esempio:

avremo un arrayList chiamato “arraylint” che è una serie di numeri interi E che metteremo i seguenti valori (ma conosci il metodo aggiuntivo, guarda il post “Arraylist in Java, con esempi”):

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);

Se stampiamo questo arrayList nell’ordine in cui abbiamo salvato gli elementi, avremo che il primo elemento sarà numerato ‘3’, il secondo numero ‘6’ e se seguiamo L’ordine, l’ultimo sarà il numero ‘7’.

Per ordinare questa lista più grande di array, utilizzeremo il metodo “Ordina” della classe Collections:

Collections.sort(arrayListInt);

Con questo metodo restituirà l’arrayList ordinato di meno a maggiore, l’uscita è il successivo (nel progetto Che puoi scaricare, puoi vedere il metodo che stampare l’arrayList sullo schermo):

Per ordinarlo dal più alto per abbassare, dobbiamo creare un oggetto della classe di azioni per confrontare gli elementi e metterli in ordine inverso . Facciamo questo come segue:

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

Esegui questa parte del programma e stampare l’arrayList ARRAYLIST risultante sullo schermo, abbiamo L’arrayList ordinato da più alti a meno:

Posicion(1) = 7Posicion(2) = 6Posicion(3) = 5Posicion(4) = 4Posicion(5) = 3Posicion(6) = 2Posicion(7) = 1

ma cosa succede se ciò che abbiamo è un arrayList di oggetti di A certa classe e ciò che vogliamo ordinare quella lista dell’arraylist per il valore di un certo attributo?. Bene, c’è una soluzione semplice che mostreremo di seguito e che consiste in sovrascrivere un metodo della classe comparatore.
Supponiamo di avere una classe “persona” nel seguente:

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();}}

Supponiamo di avere un arrayList chiamato “Persone” con i seguenti oggetti nella persona:

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));

Questo arraylist vogliamo (di meno dell’età precedente) a seconda dell’età delle persone, quindi dobbiamo scrivere il metodo “Confronta” della classe comparatore e Chiama il metodo “Ordina” della classe Collections. Facciamo questo come segue:

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

Come vediamo quale il metodo “confronta” è quello di confrontare due anni. In questo caso stiamo confrontando due attributi di tipo “intero”. Se vogliamo farlo con una stringa, doppia, ecc. Dobbiamo solo cambiare il tipo di dati. Come uscita a questo codice abbiamo quanto segue:

Se ora vogliamo ordinarlo da almeno , Dobbiamo solo modificare il metodo “Confronta” impostando il confronto sottosopra:

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()));}});

come risultato di Questa gestione otteniamo quanto segue:

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

Questo è in sintesi tutto quanto necessario per ordinare Arraylist, sia da un attributo di Una serie di oggetti o con dati atomici (in realtà sono oggetti che rappresentano dati atomici, interi, doppio, ecc.). Non abbiamo inserito in dettaglio per spiegare le classi di comparator e collezioni poiché in linea di principio lo scopo di questo post è dare una soluzione all’ordinazione dell’arraylist.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *