logo

Program Java pentru a sorta un ArrayList

ArrayList este clasa furnizată în cadrul Collection. În Java, cadrul de colectare este definit în pachetul java.util. ArrayList este folosit pentru a stoca dinamic elementele. Este mai flexibil decât o matrice, deoarece nu există o limită de dimensiune în ArrayList. ArrayList stochează datele într-o manieră neordonată. În unele cazuri, trebuie să rearanjam datele într-un mod ordonat.

Există două tipuri de ArrayList care există în Java. Una este ArrayList de obiecte din clasa Wrapper și alta este ArrayList de obiecte definite de utilizator. Vom vedea sortarea ambelor tipuri de ArrayList. Să începem cu primul.

  1. Sortarea unui ArrayList de obiecte Wrapper Class.
    • Ordine crescătoare
    • Ordine descrescatoare
  2. Sortarea unui ArrayList de obiecte definite de utilizator.
    • Comparabil
    • Comparator

Tip 1: Sortarea unui ArrayList de obiecte Wrapper Class



Un obiect de clasă ArrayList din Wrapper nu este altceva decât o ArrayList de obiecte precum String, Integers etc. O ArrayList poate fi sortată în două moduri, în ordine crescătoare și descrescătoare. Clasa de colecție oferă două metode de sortare ArrayList. sort() și reverseOrder() pentru ordine crescătoare și respectiv descrescătoare.

1(A)Ordine crescătoare

Această metodă sort() acceptă obiectul listă ca parametru și va returna un ArrayList sortat în ordine crescătoare. Sintaxa pentru metoda sort() este ca mai jos.

Collections.sort(objectOfArrayList);>

Toate elementele din ArrayList trebuie să fie reciproc comparabile, altfel se aruncă ClassCastException . Aici, comparabil reciproc înseamnă toate articolele din listă având același tip de date.

ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');>

În exemplul de mai sus, vedem că o listă are trei elemente din care două elemente sunt de tip Integer și unul este de tip String. Cele două elemente care sunt în Integer sunt comparabile reciproc, dar elementul care este de tip String nu este comparabil cu celelalte două. În acest caz, putem obține o ClassCastException. Prin urmare, lista trebuie să aibă același tip de elemente.

Să luăm în considerare următorul exemplu pentru a înțelege sortarea.

Java




șir de caractere java înlocuiți

// Java Program to Sort an ArrayList> // import java.util package> import> java.util.*;> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>'India'>);> >list.add(>'Pakistan'>);> >list.add(>'Srilanka'>);> >list.add(>'USA'>);> >list.add(>'Australia'>);> >list.add(>'Japan'>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in ascending Order> >Collections.sort(list);> >// printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

>

>

Ieșire:

Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>

1(B) Ordine descendentă

Pentru a sorta un ArrayList în ordine descrescătoare, folosim ordine inversă() metoda ca argument al unei metode sort(). nu putem apela direct metoda reverseOrder(). Această metodă ia doi parametri, unul este un obiect al ArrayList și al doilea parametru este metoda Collections.reversOrder(). Această metodă va returna ArrayList în ordine descrescătoare. Similar cu metoda sort() ArrayList trebuie să fie comparabilă reciproc, altfel se aruncă ClassCastException .

Collections.sort(objectOfArrayList, Collections.reverseOrder());>

Aici această metodă sortează mai întâi elementele în ordine crescătoare, apoi va inversa ordinea elementelor sortate.

Java




jvm în java

// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>410>);> >list.add(>250>);> >list.add(>144>);> >list.add(>967>);> >list.add(>289>);> >list.add(>315>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in descending Order> >Collections.sort(list, Collections.reverseOrder());> >// Printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

>

>

Ieșire:

Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>

2. Sortarea unui ArrayList de obiecte definite de utilizator

O ArrayList de obiecte definite de utilizator nu este altceva decât un ArrayL.ist de obiecte personalizate. În Java, există două interfețe care pot fi folosite pentru a sorta elementele colecției. Comparabil și Comparator.

2(A) Comparabil

Comparabil oferă o singură secvență de sortare. Dacă folosim Comparable, va afecta clasa inițială. Interfața comparabilă oferă compara cu() metoda de sortare a elementelor. În java, comparabil este oferit de pachetul java.lang. Putem sorta ArrayList prin invocare Metoda Collections.sort(List). .

Exemplu: Sortarea se face în funcție de numărul de mașini din stoc.

Java




// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> // Implements comparable interface into custom class> class> Car>implements> Comparable {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor of the class> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> >// Override the compareTo method> >public> int> compareTo(Car car)> >{> >if> (stock == car.stock)> >return> 0>;> >else> if> (stock>masina.stoc)> >return> 1>;> >else> >return> ->1>;> >}> }> // Main driver method> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c);> >// Iterate over ArrayList using for each loop> >for> (Car car : c) {> >// Print the sorted ArrayList> >System.out.println(car.ModalNo +>' '> + car.name> >+>' '> + car.stock);> >}> >}> }>

>

>

Ieșire:

2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>

2(B) Comparator

Comparatorul oferă mai multe secvențe de sortare. Comparatorul nu va afecta clasa inițială. Comparatorul oferă comparaţie() metoda de sortare a elementelor. În java, comparabil este oferit de pachetul java.util. Putem sorta ArrayList invocând metoda Collections.sort(List, Comparator). Să luăm un exemplu.

Java




// Java Program to Sort an ArrayList> // Step 1: ImportingDB files> import> java.util.*;> // Class 1: Parent Class> class> Car {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> }> // Class 2: Child class> // creates the comparator for comparing stock value> class> StockComparator>implements> Comparator {> >// Function to compare> >public> int> compare(Car c1, Car c2)> >{> >if> (c1.stock == c2.stock)> >return> 0>;> >else> if> (c1.stock>c2.stoc)> >return> 1>;> >else> >return> ->1>;> >}> }> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c,>new> StockComparator());> >// For each loop to iterate> >for> (Car car : c) {> > >// Print the sorted ArrayList> >System.out.println(car.stock +>' '> + car.name> >+>' '> + car.ModalNo);> >}> >}> }>

>

convertiți obiectul java în json

>

Ieșire:

10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>