Collections.sort() i Java med eksempler

java.util.Collections.sort() metoden er til stede i klassen java.util.Collections. Den brukes til å sortere elementene som er tilstede i det spesifiserte liste av samlingen i stigende rekkefølge. Det fungerer på samme måte som java.util.Arrays.sort() metoden, men den er bedre enn fordi den kan sortere elementene i Array samt koblet liste, kø og mange flere som er til stede i den.

public static void sort(List myList) myList : A List type object we want to sort. This method doesn't return anything 

Eksempel:

Let us suppose that our list contains {'Geeks For Geeks', 'Friends', 'Dear', 'Is', 'Superb'} After using Collection.sort(), we obtain a sorted list as {'Dear', 'Friends', 'Geeks For Geeks', 'Is', 'Superb'} 

Sortering av en ArrayList i stigende rekkefølge

JAVA




// Java program to demonstrate working of Collections.sort()> import> java.util.*;> public> class> Collectionsorting> {> > public> static> void> main(String[] args)> > {> > // Create a list of strings> > ArrayList al => new> ArrayList();> > al.add(> 'Geeks For Geeks'> );> > al.add(> 'Friends'> );> > al.add(> 'Dear'> );> > al.add(> 'Is'> );> > al.add(> 'Superb'> );> > /* Collections.sort method is sorting the> > elements of ArrayList in ascending order. */> > Collections.sort(al);> > // Let us print the sorted list> > System.out.println(> 'List after the use of'> +> > ' Collection.sort() : '> + al);> > }> }>

Produksjon

List after the use of Collection.sort() : [Dear, Friends, Geeks For Geeks, Is, Superb] 

Tidskompleksitet : O(N log N) ettersom tidskompleksiteten til Collections.sort() er O(nlog(n)).
Auxiliary Space : O(1)

Sortering av en ArrayList i synkende rekkefølge

JAVA




// Java program to demonstrate working of Collections.sort()> // to descending order.> import> java.util.*;> public> class> Collectionsorting> {> > public> static> void> main(String[] args)> > {> > // Create a list of strings> > ArrayList al => new> ArrayList();> > al.add(> 'Geeks For Geeks'> );> > al.add(> 'Friends'> );> > al.add(> 'Dear'> );> > al.add(> 'Is'> );> > al.add(> 'Superb'> );> > /* Collections.sort method is sorting the> > elements of ArrayList in ascending order. */> > Collections.sort(al, Collections.reverseOrder());> > // Let us print the sorted list> > System.out.println(> 'List after the use of'> +> > ' Collection.sort() : '> + al);> > }> }>

Produksjon

List after the use of Collection.sort() : [Superb, Is, Geeks For Geeks, Friends, Dear] 

Tidskompleksitet: O(N log N) som tidskompleksiteten til Collections.sort() er O(nlog(n)).
Hjelpeplass: O(1)

Sortering av en ArrayList i henhold til brukerdefinerte kriterier. Vi kan bruke Komparatorgrensesnitt for dette formålet.

Java




// Java program to demonstrate working of Comparator> // interface and Collections.sort() to sort according> // to user defined criteria.> import> java.util.*;> import> java.lang.*;> import> java.io.*;> // A class to represent a student.> class> Student> {> > int> rollno;> > String name, address;> > // Constructor> > public> Student(> int> rollno, String name,> > String address)> > {> > this> .rollno = rollno;> > this> .name = name;> > this> .address = address;> > }> > // Used to print student details in main()> > public> String toString()> > {> > return> this> .rollno +> ' '> +> this> .name +> > ' '> +> this> .address;> > }> }> class> Sortbyroll> implements> Comparator> {> > // Used for sorting in ascending order of> > // roll number> > public> int> compare(Student a, Student b)> > {> > return> a.rollno - b.rollno;> > }> }> // Driver class> class> Main> {> > public> static> void> main (String[] args)> > {> > ArrayList ar => new> ArrayList();> > ar.add(> new> Student(> 111> ,> 'bbbb'> ,> 'london'> ));> > ar.add(> new> Student(> 131> ,> 'aaaa'> ,> 'nyc'> ));> > ar.add(> new> Student(> 121> ,> 'cccc'> ,> 'jaipur'> ));> > System.out.println(> 'Unsorted'> );> > for> (> int> i=> 0> ; i System.out.println(ar.get(i)); Collections.sort(ar, new Sortbyroll()); System.out.println(' Sorted by rollno'); for (int i=0; i System.out.println(ar.get(i)); } }>

Produksjon

Unsorted 111 bbbb london 131 aaaa nyc 121 cccc jaipur Sorted by rollno 111 bbbb london 121 cccc jaipur 131 aaaa nyc 

Arrays.sort() vs Collections.sort() Arrays.sort fungerer for arrays som også kan være av primitiv datatype. Samlinger .sort() fungerer for objekter Samlinger som ArrayList , LinkedList , etc. Vi kan bruke Collections.sort() til å sortere en matrise etter å ha laget en ArrayList med gitte matriseelementer.

JAVA




// Using Collections.sort() to sort an array> import> java.util.*;> public> class> Collectionsort> {> > public> static> void> main(String[] args)> > {> > // create an array of string objs> > String domains[] = {> 'Practice'> ,> 'Geeks'> ,> > 'Code'> ,> 'Quiz'> };> > // Here we are making a list named as Collist> > List colList => > new> ArrayList(Arrays.asList(domains));> > // Collection.sort() method is used here> > // to sort the list elements.> > Collections.sort(colList);> > // Let us print the sorted list> > System.out.println(> 'List after the use of'> +> > ' Collection.sort() : '> +> > colList);> > }> }>

Produksjon

List after the use of Collection.sort() : [Code, Geeks, Practice, Quiz] 

Arrays.sort() vs Collections.sort() tidskompleksitet:

Arrays.sort() bruker en Dual-Pivot Quicksort-algoritme som gir en tidskompleksitet på O(N.log N) som typisk er raskere enn tradisjonelle Quicksort-algoritmer. På den annen side oppretter Collections.sort() en rekke listeelementer, sorterer dem ved hjelp av en adaptiv Mergesort-algoritme, og itererer over listen for å plassere hvert element på riktig plassering. Således for primitive datatyper som int, char, double, etc. Arrays.sort() viser seg å være mye mer tidseffektiv enn Collections.sort(). Problemer som involverer primitive datatyper bør prøves å løse ved å bruke Arrays.sort() for bedre optimalisering.

Nedenfor er koden for å demonstrere forskjellen:

Java




/*package whatever //do not write package name here */> import> java.io.*;> import> java.util.*;> class> GFG {> > public> static> void> main (String[] args) {> > int> len => 5000000> ;> > > // creating a large test array> > int> [] arr => new> int> [len];> > for> (> int> i = len; i>> 0> ; i--)> > arr[len - i] = i;> > > // creating a large test arraylist> > ArrayList list => new> ArrayList();> > for> (> int> i = len; i>> 0> ; i--)> > list.add(i);> > > // calculating time used by arrays.sort()> > long> startA = System.currentTimeMillis();> > Arrays.sort(arr);> > long> stopA = System.currentTimeMillis();> > > // calculating time used by collections.sort()> > long> startAL = System.currentTimeMillis();> > Collections.sort(list);> > long> stopAL = System.currentTimeMillis();> > > System.out.println(> 'Time taken by Arrays.sort(): '> + (stopA - startA));> > System.out.println(> 'Time taken by Collections.sort(): '> + (stopAL - startAL));> > }> }> // This code is contributed by godcoder28>

Produksjon

Time taken by Arrays.sort(): 29 Time taken by Collections.sort(): 42 

Artikkelen er ønsket å være nyttig for de anerkjente geeks. .