ArrayList je třída poskytovaná v rámci Collection. V Javě je rámec kolekce definován v balíčku java.util. ArrayList se používá k dynamickému ukládání prvků. Je flexibilnější než pole, protože v ArrayList není žádné omezení velikosti. ArrayList ukládá data neuspořádaným způsobem. V některých případech potřebujeme přeskupit data uspořádaným způsobem.
V Javě jsou dva typy ArrayList. Jedním je ArrayList objektů třídy Wrapper a druhým ArrayList objektů definovaných uživatelem. Uvidíme řazení obou typů ArrayList. Začněme tím prvním.
- Třídění ArrayList objektů třídy Wrapper.
- Vzestupně
- Sestupné pořadí
- Třídění ArrayList objektů definovaných uživatelem.
- Srovnatelný
- Komparátor
Typ 1: Třídění ArrayList objektů třídy Wrapper
Objekt třídy ArrayList of Wrapper není nic jiného než ArrayList objektů jako String, Integers atd. ArrayList lze třídit dvěma způsoby vzestupně a sestupně. Třída kolekce poskytuje dvě metody pro řazení ArrayList. sort() a reverseOrder() pro vzestupné a sestupné pořadí.
1(A) Vzestupně
Tato metoda sort() akceptuje objekt seznamu jako parametr a vrátí ArrayList seřazený ve vzestupném pořadí. Syntaxe metody sort() je podobná níže.
Collections.sort(objectOfArrayList);>
Všechny prvky v ArrayList musí být vzájemně srovnatelné, jinak to hází ClassCastException . Vzájemně srovnatelné zde znamená, že všechny položky seznamu mají stejný datový typ.
ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');> Ve výše uvedeném příkladu vidíme, že seznam má tři prvky, z nichž dva jsou typu Integer a jeden je typu String. Dva prvky, které jsou v Integer, jsou vzájemně srovnatelné, ale prvek, který je typu String, není srovnatelný s ostatními dvěma. V tomto případě můžeme získat ClassCastException. Seznam tedy musí obsahovat stejný typ prvků.
Podívejme se na následující příklad, abychom porozuměli třídění.
Jáva
// 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);> >}> }> |
>
>
Výstup:
Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>
1(B) Sestupně
K řazení ArrayList v sestupném pořadí používáme obrácené pořadí() metoda jako argument metody sort(). nemůžeme přímo volat metodu reverseOrder(). Tato metoda má dva parametry, jeden je objekt ArrayList a druhý parametr je metoda Collections.reversOrder(). Tato metoda vrátí ArrayList v sestupném pořadí. Podobně jako u metody sort() musí být ArrayList vzájemně srovnatelné, jinak vyvolá ClassCastException .
Collections.sort(objectOfArrayList, Collections.reverseOrder());>
Zde tato metoda nejprve seřadí položky ve vzestupném pořadí a poté pořadí seřazených položek obrátí.
Jáva
// 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);> >}> }> |
>
>
Výstup:
Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>
2. Třídění ArrayList objektů definovaných uživatelem
ArrayList objektů definovaných uživatelem není nic jiného než ArrayL.ist uživatelských objektů. V Javě existují dvě rozhraní, která lze použít k třídění prvků kolekce. Srovnatelné a srovnávací.
2(A) Srovnatelné
Porovnatelné poskytuje jedinou sekvenci řazení. Pokud použijeme Comparable, ovlivní to původní třídu. Porovnatelné rozhraní poskytuje porovnat s() způsob třídění prvků. V Javě srovnatelné poskytuje balíček java.lang. ArrayList můžeme třídit vyvoláním Metoda Collections.sort(List). .
Příklad: Řazení se provádí podle počtu vozů na skladě.
Jáva
// 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);> >}> >}> }> |
>
>
Výstup:
2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>
2(B) Komparátor
třídicí algoritmy merge sort
Komparátor poskytuje několik třídicích sekvencí. Komparátor neovlivní původní třídu. Komparátor poskytuje porovnat() způsob třídění prvků. V Javě srovnatelné poskytuje balíček java.util. ArrayList můžeme seřadit vyvoláním metody Collections.sort(List, Comparator). Vezměme si jeden příklad.
Jáva
// 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);> >}> >}> }> |
>
>
Výstup:
10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>