ArrayList er den klasse, der leveres i samlingsrammen. I Java er samlingsrammen defineret i pakken java.util. ArrayList bruges til dynamisk at gemme elementerne. Det er mere fleksibelt end et array, fordi der ikke er nogen størrelsesbegrænsning i ArrayList. ArrayList gemmer dataene på en uordnet måde. I nogle tilfælde skal vi omarrangere dataene på en ordnet måde.
Der er to typer ArrayList i java. Den ene er ArrayList af Wrapper-klasseobjekter og en anden er ArrayList af brugerdefinerede objekter. Vi vil se sorteringen af begge typer ArrayList. Lad os starte med den første.
- Sortering af en ArrayList af Wrapper Class-objekter.
- Stigende rækkefølge
- Faldende rækkefølge
- Sortering af en ArrayList af brugerdefinerede objekter.
- Sammenlignelig
- Komparator
Type 1: Sortering af en ArrayList af Wrapper Class-objekter
Et ArrayList af Wrapper klasseobjekt er intet andet end en ArrayList af objekter som String, Integers osv. En ArrayList kan sorteres på to måder stigende og faldende rækkefølge. Samlingsklassen giver to metoder til sortering af ArrayList. sort() og reverseOrder() for henholdsvis stigende og faldende rækkefølge.
1(A) Stigende rækkefølge
Denne sort()-metode accepterer listeobjektet som en parameter, og den returnerer en ArrayList sorteret i stigende rækkefølge. Syntaksen for sort()-metoden er som nedenfor.
Collections.sort(objectOfArrayList);>
Alle elementer i ArrayList skal være gensidigt sammenlignelige, ellers kaster den ClassCastException . Her betyder gensidigt sammenlignelig, at alle elementerne på listen har samme datatype.
ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');> I ovenstående eksempel ser vi, at en liste har tre elementer, hvoraf to elementer er af heltalstypen og et af strengtypen. De to elementer, der er i heltal, er gensidigt sammenlignelige, men det element, der er af String-typen, er ikke sammenligneligt med de to andre. I dette tilfælde kan vi få en ClassCastException. Derfor skal listen have den samme type elementer.
Lad os overveje følgende eksempel for at forstå sortering.
Java
java brugsdato
// 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);> >}> }> |
>
>
Produktion:
Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>
1(B) faldende rækkefølge
For at sortere en ArrayList i faldende rækkefølge bruger vi omvendt rækkefølge() metode som et argument af en sort() metode. vi kan ikke direkte kalde reverseOrder() metoden. Denne metode tager to parametre, den ene er et objekt af ArrayList og den anden parameter er metoden Collections.reversOrder(). Denne metode returnerer ArrayList i faldende rækkefølge. Svarende til sort()-metoden skal ArrayList være gensidigt sammenlignelig, ellers kaster den ClassCastException .
Collections.sort(objectOfArrayList, Collections.reverseOrder());>
Her sorterer denne metode først emnerne i stigende rækkefølge, så vil den vende rækkefølgen af sorterede emner.
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);> >}> }> |
>
heltal til streng i java
>
Produktion:
Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>
2. Sortering af en ArrayList af brugerdefinerede objekter
En ArrayList af brugerdefinerede objekter er intet andet end en ArrayL.ist af brugerdefinerede objekter. I Java er der to grænseflader, der kan bruges til at sortere samlingselementer. Sammenlignelig og Comparator.
2(A) Sammenlignelig
python reducere
Sammenlignelig giver en enkelt sorteringssekvens. Hvis vi bruger Comparable, vil det påvirke den originale klasse. Sammenlignelig grænseflade giver sammenligne med() metode til at sortere elementer. I java leveres sammenlignelig af java.lang-pakken. Vi kan sortere ArrayList ved at påkalde Collections.sort(List) metode .
Eksempel: Sortering sker ud fra antal biler på lager.
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);> >}> >}> }> |
>
>
Produktion:
2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>
2(B) Komparator
Komparator giver flere sorteringssekvenser. Komparatoren vil ikke påvirke den oprindelige klasse. Komparator giver sammenligne() metode til at sortere elementer. I java leveres sammenlignelig af java.util-pakken. Vi kan sortere ArrayList ved at påkalde Collections.sort(List, Comparator) metoden. Lad os tage et eksempel.
Java
// 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);> >}> >}> }> |
>
int streng
>
Produktion:
10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>