logo

Programa Java per ordenar una ArrayList

ArrayList és la classe proporcionada al marc de col·lecció. A Java, el marc de col·lecció es defineix al paquet java.util. ArrayList s'utilitza per emmagatzemar dinàmicament els elements. És més flexible que una matriu perquè no hi ha cap límit de mida a ArrayList. ArrayList emmagatzema les dades de manera no ordenada. En alguns casos, hem de reordenar les dades de manera ordenada.

Hi ha dos tipus de ArrayList que hi ha a Java. Un és ArrayList d'objectes de classe Wrapper i un altre és ArrayList d'objectes definits per l'usuari. Veurem l'ordenació dels dos tipus de ArrayList. Comencem pel primer.



  1. Ordenant una ArrayList d'objectes de classe Wrapper.
    • Ordre ascendent
    • Ordre descendent
  2. Ordenant una ArrayList d'objectes definits per l'usuari.
    • Comparable
    • Comparador

Tipus 1: ordenar una ArrayList d'objectes de classe Wrapper

Un objecte de classe ArrayList de Wrapper no és més que una ArrayList d'objectes com String, Integers, etc. Una ArrayList es pot ordenar de dues maneres ascendent i descendent. La classe de col·lecció proporciona dos mètodes per ordenar ArrayList. sort() i reverseOrder() per a l'ordre ascendent i descendent respectivament.

1(A)Ordre ascendent



Aquest mètode sort() accepta l'objecte llista com a paràmetre i retornarà una ArrayList ordenada en ordre ascendent. La sintaxi del mètode sort() és la següent.

Collections.sort(objectOfArrayList);>

Tots els elements de la ArrayList han de ser mútuament comparables, en cas contrari es llança ClassCastException . Aquí, comparables mútuament significa que tots els elements de la llista tenen el mateix tipus de dades.

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

A l'exemple anterior, veiem que una llista té tres elements dels quals dos són de tipus Integer i un de tipus String. Els dos elements que es troben a Integer són mútuament comparables, però l'element que és de tipus String no és comparable amb els altres dos. En aquest cas, podem obtenir una ClassCastException. Per tant, la llista ha de tenir el mateix tipus d'elements.



Considerem l'exemple següent per entendre l'ordenació.

selector de consultes

Java




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

>

>

Sortida:

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

1(B) Ordre descendent

Per ordenar una ArrayList en ordre descendent fem servir ordre invers() mètode com a argument d'un mètode sort(). no podem cridar directament el mètode reverseOrder(). Aquest mètode pren dos paràmetres, un és un objecte de ArrayList i el segon paràmetre és el mètode Collections.reversOrder(). Aquest mètode retornarà ArrayList en ordre descendent. Similar al mètode sort() ArrayList ha de ser mútuament comparable, en cas contrari es llança ClassCastException .

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

Aquí aquest mètode ordena primer els elements en ordre ascendent i després invertirà l'ordre dels elements ordenats.

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

>

>

Sortida:

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

2. Ordenar una ArrayList d'objectes definits per l'usuari

Una ArrayList d'objectes definits per l'usuari no és més que una ArrayL.ist d'objectes personalitzats. A Java, hi ha dues interfícies que es poden utilitzar per ordenar els elements de la col·lecció. Comparable i comparador.

2(A) Comparable

Comparable proporciona una única seqüència d'ordenació. Si fem servir Comparable, afectarà la classe original. Interfície comparable proporciona comparat amb() mètode per ordenar els elements. A Java, el paquet java.lang proporciona comparables. Podem ordenar la ArrayList invocant Mètode Collections.sort(List). .

Exemple: La classificació es fa en funció del nombre de cotxes en estoc.

Java




python rstrip

// 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>car.stock)> >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);> >}> >}> }>

>

>

Sortida:

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

2(B) Comparador

Comparator proporciona múltiples seqüències d'ordenació. El comparador no afectarà la classe original. El comparador proporciona compara () mètode per ordenar els elements. A Java, el paquet java.util proporciona comparables. Podem ordenar la ArrayList invocant el mètode Collections.sort(List, Comparator). Prenguem un exemple.

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.stock)> >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);> >}> >}> }>

>

>

Sortida:

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