ArrayList er klassen gitt i samlingsrammeverket. I Java er samlingsrammeverket definert i java.util-pakken. ArrayList brukes til å dynamisk lagre elementene. Det er mer fleksibelt enn en matrise fordi det ikke er noen størrelsesgrense i ArrayList. ArrayList lagrer dataene på en uordnet måte. I noen tilfeller må vi omorganisere dataene på en ordnet måte.
Det er to typer ArrayList i java. En er ArrayList av Wrapper-klasseobjekter og en annen er ArrayList av brukerdefinerte objekter. Vi vil se sorteringen av begge typer ArrayList. La oss starte med den første.
- Sortering av en ArrayList av Wrapper Class-objekter.
- Stigende rekkefølge
- Synkende rekkefølge
- Sortering av en ArrayList med brukerdefinerte objekter.
- Sammenlignbar
- Komparator
Type 1: Sortering av en ArrayList av Wrapper Class-objekter
Et ArrayList of Wrapper-objekt er ingenting annet enn en ArrayList av objekter som String, Integers, etc. En ArrayList kan sorteres på to måter stigende og synkende rekkefølge. Samlingsklassen gir to metoder for sortering av ArrayList. sort() og reverseOrder() for henholdsvis stigende og synkende rekkefølge.
1(A)Stigende rekkefølge
Denne sort()-metoden godtar listeobjektet som en parameter, og den vil returnere en ArrayList sortert i stigende rekkefølge. Syntaksen for sort()-metoden er som nedenfor.
Collections.sort(objectOfArrayList);>
Alle elementene i ArrayList må være gjensidig sammenlignbare, ellers kaster den ClassCastException . Her betyr gjensidig sammenlignbar at alle elementene på listen har samme datatype.
ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');> I eksemplet ovenfor ser vi at en liste har tre elementer, hvorav to elementer er av heltallstype og ett er strengtype. De to elementene som er i heltall er gjensidig sammenlignbare, men elementet som er av strengtype er ikke sammenlignbart med de to andre. I dette tilfellet kan vi få en ClassCastException. Derfor må listen ha samme type elementer.
La oss vurdere følgende eksempel for å forstå sortering.
Java
java bruksdato
// 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);> >}> }> |
>
>
Produksjon:
Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>
1(B) synkende rekkefølge
For å sortere en ArrayList i synkende rekkefølge bruker vi omvendt rekkefølge() metode som et argument av en sort() metode. vi kan ikke direkte kalle reverseOrder()-metoden. Denne metoden tar to parametere, den ene er et objekt av ArrayList og den andre parameteren er Collections.reversOrder()-metoden. Denne metoden vil returnere ArrayList i synkende rekkefølge. I likhet med sort()-metoden må ArrayList være gjensidig sammenlignbar, ellers kaster den ClassCastException .
Collections.sort(objectOfArrayList, Collections.reverseOrder());>
Her sorterer denne metoden først elementene i stigende rekkefølge, så vil den reversere rekkefølgen på de sorterte elementene.
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);> >}> }> |
>
Spørsmål til intervju med java språk
>
Produksjon:
Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>
2. Sortere en ArrayList med brukerdefinerte objekter
En ArrayList av brukerdefinerte objekter er ikke annet enn en ArrayL.ist av egendefinerte objekter. I Java er det to grensesnitt som kan brukes til å sortere samlingselementer. Sammenlignbar og komparator.
2(A) Sammenlignbar
python redusere
Sammenlignbar gir én enkelt sorteringssekvens. Hvis vi bruker Comparable vil det påvirke den opprinnelige klassen. Sammenlignbare grensesnitt gir sammenligne med() metode for å sortere elementer. I java er sammenlignbare levert av java.lang-pakken. Vi kan sortere ArrayList ved å påkalle Collections.sort(List)-metoden .
Eksempel: Sortering gjøres basert på antall 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);> >}> >}> }> |
>
>
Produksjon:
2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>
2(B) Komparator
Komparator gir flere sorteringssekvenser. Komparatoren vil ikke påvirke den opprinnelige klassen. Komparator gir sammenligne() metode for å sortere elementer. I java er sammenlignbare levert av java.util-pakken. Vi kan sortere ArrayList ved å påkalle Collections.sort(List, Comparator) metoden. La oss ta ett 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
>
Produksjon:
10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>