una dintre cele mai interesante caracteristici atunci când lucrați cu structuri de date de tip” stivă „,” coada „,” lista „etc. Este hirotia ta. În postul de „comenzi de ordine în Java (cu indicii săi), am implementat un API care ne-a permis să comandam matrice și indicii ei, care este o funcționalitate foarte importantă care nu a fost implementată de nici un API cunoscut și într-un mod simplu.
În acest post vom arăta cum să comandați arraylist, fie cu o matrice de date atomice, fie cu un arrailist de obiecte.
DIV ID = „794D708678 „>
Pentru a efectua aceste operațiuni Vor trebui să lucrăm cu clasa” Colecții „a Java. Nu vom explica caracteristicile acestei clase, dar pur și simplu o vom folosi pentru a comanda arraylist. Ca de obicei pe acest site, am continuat să arătăm acest lucru cu un exemplu:
Vom avea un arrailist numit „Arraylisint”, care este o serie de numere întregi și că vom pune următoarele valori (dar știți metoda Adăugați, uitați-vă la postarea „Arraylist în Java, cu exemple”):
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);
Dacă imprimăm acest arrailist în ordinea în care am salvat elementele, vom avea ca primul element să fie numerotat „3”, al doilea număr „6” și dacă vom urma Ordinea, ultima va fi numărul „7”.
Pentru a comanda acest arderelist mai mare, vom folosi metoda „Sortare” din clasa de colecții:
Collections.sort(arrayListInt);
cu această metodă va returna arrailistul ordonat mai puțin la mai mare, ieșirea fiind următoarea (în proiect pe care le puteți descărca, puteți vedea metoda care imprimă arraylistul pe ecran):
Pentru a le sorta de la cea mai mare la mai mică, trebuie să creăm un obiect al clasei de acțiuni pentru a compara elementele și a le pune în ordine inversă . Facem acest lucru după cum urmează:
divid id = „80169CBDD2″>
Executați această parte a programului și tipărirea arrazizului rezultat pe ecran, avem Arraylistul a ordonat de la cea mai mare la mai puțin:
Posicion(1) = 7Posicion(2) = 6Posicion(3) = 5Posicion(4) = 4Posicion(5) = 3Posicion(6) = 2Posicion(7) = 1
dar ceea ce se întâmplă dacă ceea ce avem este un arraylist de obiecte de a o anumită clasă și ceea ce dorim să comandați acel arrailist pentru valoarea unui anumit atribut?. Ei bine, există o soluție simplă pe care o vom arăta mai jos și că constă în suprascrierea unei metode a clasei de comparare.
Să presupunem că avem o clasă „persoană” în următoarele:
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();}}
Să presupunem că avem un arrailist numit „Oameni” cu următoarele obiecte în persoană:
divid id = „F2D8AD2E97″>
Acest arrailist pe care îl dorim (mai puțin de vârsta înaintată) în funcție de vârsta oamenilor, de aceea trebuie să scriem metoda „comparată” a clasei de comparator și Apelați metoda „Sortare” a clasei de colecții. Facem acest lucru după cum urmează:
divid id = „2078023616”>
Așa cum vedem metoda „compara” este de a compara două vârste date. În acest caz, comparăm două atribute ale tipului „Integer”. Dacă vrem să o facem cu un șir, dublu etc. Trebuie doar să schimbăm tipul de date. Ca ieșire la acest cod, avem următoarele:
divid id = „582aca02F2″>
Dacă vrem să o sortăm de la cel puțin mai mare , trebuie doar să schimbăm metoda „comparată” prin stabilirea comparației cu susul în jos:
divid id = „8842964E10″>
ca rezultat al Acest management obțin următoarele:
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
Acest lucru este în rezumat, totul este necesar pentru a comanda arraylist, fie printr-un atribut al O serie de obiecte sau cu date atomice (de fapt sunt obiecte care reprezintă date atomice, număr întreg, dublu etc.). Nu am intrat în detaliu pentru a explica cursurile de comparator și colecții, deoarece, în principiu, scopul acestui post este de a da o soluție la ordonarea arraylistului.