logo

Programma Java per ordinare un ArrayList

ArrayList è la classe fornita nel framework Collection. In Java, il framework della raccolta è definito nel pacchetto java.util. ArrayList viene utilizzato per memorizzare dinamicamente gli elementi. È più flessibile di un array perché non esiste alcun limite di dimensione in ArrayList. ArrayList memorizza i dati in modo non ordinato. In alcuni casi, è necessario riorganizzare i dati in modo ordinato.

Esistono due tipi di ArrayList in Java. Uno è ArrayList di oggetti della classe Wrapper e un altro è ArrayList di oggetti definiti dall'utente. Vedremo l'ordinamento di entrambi i tipi di ArrayList. Cominciamo con il primo.



  1. Ordinamento di un ArrayList di oggetti Classe Wrapper.
    • Ordine ascendente
    • Ordine decrescente
  2. Ordinamento di un ArrayList di oggetti definiti dall'utente.
    • Paragonabile
    • Comparatore

Tipo 1: ordinamento di un ArrayList di oggetti Classe Wrapper

Un oggetto della classe ArrayList of Wrapper non è altro che un ArrayList di oggetti come String, Integers, ecc. Un ArrayList può essere ordinato in due modi, ascendente e discendente. La classe collection fornisce due metodi per ordinare ArrayList. sort() e reverseOrder() rispettivamente per l'ordine ascendente e discendente.

1(A)Ordine crescente



Questo metodo sort() accetta l'oggetto list come parametro e restituirà un ArrayList ordinato in ordine crescente. La sintassi per il metodo sort() è la seguente.

Collections.sort(objectOfArrayList);>

Tutti gli elementi nell'ArrayList devono essere reciprocamente confrontabili, altrimenti genera un'eccezione ClassCastException . Qui, reciprocamente comparabili significa che tutti gli elementi dell'elenco hanno lo stesso tipo di dati.

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

Nell'esempio sopra, vediamo che una lista ha tre elementi di cui due elementi sono di tipo Integer e uno è di tipo String. I due elementi che sono in Integer sono tra loro confrontabili ma l'elemento che è di tipo String non è confrontabile con gli altri due. In questo caso, possiamo ottenere una ClassCastException. Pertanto, l'elenco deve avere lo stesso tipo di elementi.



Consideriamo il seguente esempio per comprendere l'ordinamento.

Giava




attrice cinematografica rekha

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

>

>

Produzione:

modulazione d'ampiezza
Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>

1(B) Ordine discendente

Per ordinare un ArrayList in ordine decrescente utilizziamo ordine inverso() metodo come argomento di un metodo sort(). non possiamo chiamare direttamente il metodo reverseOrder(). Questo metodo accetta due parametri, uno è un oggetto di ArrayList e il secondo parametro è il metodo Collections.reversOrder(). Questo metodo restituirà ArrayList in ordine decrescente. Similmente al metodo sort() ArrayList deve essere reciprocamente comparabile, altrimenti genera un'eccezione ClassCastException .

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

Qui questo metodo prima ordina gli elementi in ordine crescente, quindi invertirà l'ordine degli elementi ordinati.

Giava




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

>

>

Produzione:

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

2. Ordinamento di un ArrayList di oggetti definiti dall'utente

Un ArrayList di oggetti definiti dall'utente non è altro che un ArrayL.ist di oggetti personalizzati. In Java esistono due interfacce che possono essere utilizzate per ordinare gli elementi della raccolta. Comparabile e comparatore.

2(A) Paragonabile

Comparable fornisce una singola sequenza di ordinamento. Se usiamo Comparable influenzerà la classe originale. L'interfaccia comparabile fornisce Paragonare a() metodo per ordinare gli elementi. In Java, un metodo comparabile è fornito dal pacchetto java.lang. Possiamo ordinare l'ArrayList invocando Metodo Collections.sort(List). .

Esempio: L'ordinamento viene effettuato in base al numero di auto in stock.

Giava

convertire l'oggetto Java in JSON




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

>

>

Produzione:

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

2(B) Comparatore

ciclo infinito

Il comparatore fornisce più sequenze di ordinamento. Il comparatore non influenzerà la classe originale. Il comparatore fornisce confrontare() metodo per ordinare gli elementi. In Java, un metodo comparabile è fornito dal pacchetto java.util. Possiamo ordinare l'ArrayList invocando il metodo Collections.sort(List, Comparator). Facciamo un esempio.

Giava




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

>

>

Produzione:

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