ArrayList to klasa dostępna w frameworku Collection. W Javie struktura kolekcji jest zdefiniowana w pakiecie java.util. ArrayList służy do dynamicznego przechowywania elementów. Jest bardziej elastyczny niż tablica, ponieważ w ArrayList nie ma limitu rozmiaru. ArrayList przechowuje dane w sposób nieuporządkowany. W niektórych przypadkach musimy uporządkować dane w uporządkowany sposób.
W Javie istnieją dwa typy ArrayList. Jedna to ArrayList obiektów klasy Wrapper, a druga to ArrayList obiektów zdefiniowanych przez użytkownika. Zobaczymy sortowanie obu typów ArrayList. Zacznijmy od pierwszego.
- Sortowanie ArrayList obiektów klasy Wrapper.- Rosnąco
- Kolejność malejąca
 
- Sortowanie ArrayList obiektów zdefiniowanych przez użytkownika.- Porównywalny
- Komparator
 
Typ 1: Sortowanie ArrayList obiektów klasy Wrapper
Obiekt klasy ArrayList of Wrapper to nic innego jak ArrayList obiektów takich jak String, Integers itp. ArrayList można sortować na dwa sposoby w kolejności rosnącej i malejącej. Klasa kolekcji udostępnia dwie metody sortowania ArrayList. sort() i ReverseOrder() odpowiednio dla kolejności rosnącej i malejącej.
1(A) Porządek rosnący
konwersja ciągu znaków na liczbę całkowitą
Ta metoda sort() akceptuje obiekt listy jako parametr i zwraca listę ArrayList posortowaną w kolejności rosnącej. Składnia metody sort() jest taka jak poniżej.
Collections.sort(objectOfArrayList);>
Wszystkie elementy w ArrayList muszą być wzajemnie porównywalne, w przeciwnym razie zostaną wyrzucone Wyjątek ClassCast . Tutaj wzajemnie porównywalne oznacza, że wszystkie elementy listy mają ten sam typ danych.
ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');> W powyższym przykładzie widzimy, że lista składa się z trzech elementów, z czego dwa są typu Integer, a jeden jest typu String. Dwa elementy w liczbie całkowitej są wzajemnie porównywalne, ale element typu String nie jest porównywalny z pozostałymi dwoma. W tym przypadku możemy uzyskać wyjątek ClassCastException. Dlatego lista musi zawierać elementy tego samego typu.
Rozważmy następujący przykład, aby zrozumieć sortowanie.
Jawa
     
  
     
     
    
| // 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);>>}>}> | 
>
>
Wyjście:
Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>
1(B) Porządek malejący
Aby posortować ArrayList w kolejności malejącej, używamy Odwrotna kolejność() jako argument metody sort(). nie możemy bezpośrednio wywołać metody ReverseOrder(). Ta metoda przyjmuje dwa parametry, jeden jest obiektem ArrayList, a drugi parametr to metoda Collections.reversOrder(). Ta metoda zwróci ArrayList w kolejności malejącej. Podobnie jak metoda sort() ArrayList musi być wzajemnie porównywalna, w przeciwnym razie wyrzuca Wyjątek ClassCast .
Collections.sort(objectOfArrayList, Collections.reverseOrder());>
W tym przypadku metoda ta najpierw sortuje elementy w kolejności rosnącej, a następnie odwraca kolejność posortowanych elementów.
Jawa
     
  
     
     
    
| // 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);>>}>}> | 
>
Linux edytuj plik
>
Wyjście:
Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>
2. Sortowanie ArrayList obiektów zdefiniowanych przez użytkownika
ArrayList obiektów zdefiniowanych przez użytkownika to nic innego jak ArrayList obiektów niestandardowych. W Javie istnieją dwa interfejsy, których można użyć do sortowania elementów kolekcji. Porównywalne i komparator.
2(A) Porównywalne
Porównywalne zapewnia pojedynczą sekwencję sortowania. Jeśli użyjemy Comparable, wpłynie to na oryginalną klasę. Porównywalny interfejs zapewnia porównać do() metoda sortowania elementów. W Javie porównywalne zapewnia pakiet java.lang. Możemy posortować ArrayList poprzez wywołanie Metoda Collections.sort(List). .
Przykład: Sortowanie odbywa się na podstawie liczby samochodów w magazynie.
Jawa
     
  
     
     
    
Jasmine Davis jako dziecko
| // 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);>>}>>}>}> | 
>
>
Wyjście:
2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>
Komparator 2(B).
Komparator zapewnia wiele sekwencji sortowania. Komparator nie będzie miał wpływu na oryginalną klasę. Komparator zapewnia porównywać() metoda sortowania elementów. W Javie porównywalne zapewnia pakiet java.util. Listę ArrayList możemy posortować wywołując metodę Collections.sort(List, Comparator). Weźmy jeden przykład.
Jawa
     
  
     
     
    
| // 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);>>}>>}>}> | 
>
>
Wyjście:
10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>
