logo

Program Java do sortowania listy tablic

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.



  1. Sortowanie ArrayList obiektów klasy Wrapper.
    • Rosnąco
    • Kolejność malejąca
  2. 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>