ArrayList je razred, ki je na voljo v ogrodju zbirke. V Javi je ogrodje zbirke definirano v paketu java.util. ArrayList se uporablja za dinamično shranjevanje elementov. Je bolj prilagodljiv kot matrika, ker v ArrayList ni omejitve velikosti. ArrayList shranjuje podatke na neurejen način. V nekaterih primerih moramo podatke preurediti na urejen način.
V Javi obstajata dve vrsti ArrayList. Eden je ArrayList predmetov razreda Wrapper, drugi pa ArrayList uporabniško definiranih predmetov. Videli bomo razvrščanje obeh vrst seznama ArrayList. Začnimo s prvim.
- Razvrščanje ArrayList predmetov Wrapper Class.
- Naraščajoči vrstni red
- Padajoči vrstni red
- Razvrščanje seznama ArrayList uporabniško določenih predmetov.
- Primerljivo
- Primerjalnik
Tip 1: Razvrščanje seznama ArrayList predmetov razreda ovojnice
ArrayList of Wrapper class object ni nič drugega kot ArrayList objektov, kot so String, Integers itd. ArrayList je mogoče razvrstiti na dva načina, v naraščajočem in padajočem vrstnem redu. Zbirni razred ponuja dve metodi za razvrščanje ArrayList. sort() in reverseOrder() za naraščajoči oziroma padajoči vrstni red.
1 (A) Naraščajoči vrstni red
Ta metoda sort() sprejme objekt seznama kot parameter in bo vrnila ArrayList, razvrščen v naraščajočem vrstnem redu. Sintaksa za metodo sort() je podobna spodnji.
Collections.sort(objectOfArrayList);>
Vsi elementi v ArrayList morajo biti medsebojno primerljivi, sicer vrže ClassCastException . Tukaj medsebojno primerljivi pomenijo vse elemente seznama, ki imajo isti tip podatkov.
ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');> V zgornjem primeru vidimo, da ima seznam tri elemente, od katerih sta dva elementa tipa Integer, eden pa je tipa String. Dva elementa, ki sta v Integer, sta medsebojno primerljiva, vendar element, ki je vrste String, ni primerljiv z drugima dvema. V tem primeru lahko dobimo izjemo ClassCastException. Zato mora seznam vsebovati isto vrsto elementov.
Za razumevanje razvrščanja si oglejmo naslednji primer.
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);> >}> }> |
>
>
Izhod:
Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>
1(B) Padajoči vrstni red
Za razvrščanje seznama ArrayList v padajočem vrstnem redu uporabljamo obratni vrstni red() kot argument metode sort(). ne moremo neposredno poklicati metode reverseOrder(). Ta metoda ima dva parametra, eden je predmet seznama ArrayList, drugi parameter pa je metoda Collections.reversOrder(). Ta metoda bo vrnila ArrayList v padajočem vrstnem redu. Podobno kot metoda sort() mora biti ArrayList medsebojno primerljiv, sicer vrže ClassCastException .
Collections.sort(objectOfArrayList, Collections.reverseOrder());>
Tukaj ta metoda najprej razvrsti elemente v naraščajočem vrstnem redu, nato pa obrne vrstni red razvrščenih elementov.
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);> >}> }> |
>
če drugače bash
>
Izhod:
Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>
2. Razvrščanje seznama ArrayList uporabniško določenih predmetov
ArrayList uporabniško določenih predmetov ni nič drugega kot ArrayL.ist predmetov po meri. V Javi obstajata dva vmesnika, ki ju je mogoče uporabiti za razvrščanje elementov zbirke. Primerjalnik in primerjalnik.
2(A) Primerljivo
Comparable zagotavlja eno samo zaporedje razvrščanja. Če uporabimo Comparable, bo to vplivalo na prvotni razred. Primerljiv vmesnik zagotavlja primerjaj() način razvrščanja elementov. V Javi je primerljivo s paketom java.lang. ArrayList lahko razvrstimo s klicem Metoda Collections.sort(List). .
primer: Razvrščanje poteka glede na število avtomobilov na zalogi.
Java
// 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);> >}> >}> }> |
>
>
Izhod:
2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>
2(B) Primerjalnik
Primerjalnik ponuja več zaporedij razvrščanja. Primerjalnik ne bo vplival na prvotni razred. Primerjalnik ponuja primerjaj() način razvrščanja elementov. V Javi je primerljivo s paketom java.util. ArrayList lahko razvrstimo tako, da prikličemo metodo Collections.sort(List, Comparator). Vzemimo en primer.
Java
koliko tednov na mesec
// 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.zaloga)> >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);> >}> >}> }> |
>
>
Izhod:
10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>