Collections.sort() v Javě s příklady
java.util.Collections.sort() metoda je přítomna ve třídě java.util.Collections. Používá se k řazení prvků přítomných v zadaném seznam sbírky ve vzestupném pořadí. Funguje podobně jako java.util.Arrays.sort() metoda, ale je to lepší, než protože dokáže třídit prvky pole, stejně jako propojený seznam, frontu a mnoho dalších v něm přítomných.
public static void sort(List myList) myList : A List type object we want to sort. This method doesn't return anything
Příklad:
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'} Řazení ArrayList ve vzestupném pořadí
JÁVA
// 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);> > }> }> |
Výstup
List after the use of Collection.sort() : [Dear, Friends, Geeks For Geeks, Is, Superb]
Časová složitost : O(N log N) jako časová složitost Collections.sort() je O(nlog(n)).
Pomocný prostor : O(1)
Řazení ArrayList v sestupném pořadí
JÁVA
// 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);> > }> }> |
Výstup
List after the use of Collection.sort() : [Superb, Is, Geeks For Geeks, Friends, Dear]
Časová náročnost: O(N log N) jako časová složitost Collections.sort() je O(nlog(n)).
Pomocný prostor: O(1)
Třídění ArrayList podle uživatelem definovaných kritérií. Můžeme použít Rozhraní komparátoru pro tento účel.
Jáva
// 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)); } }> |
Výstup
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 funguje pro pole, která mohou být také primitivního datového typu. Sbírky .sort() funguje pro objekty jako jsou kolekce ArrayList , Spojový seznam , atd. Po vytvoření ArrayList daných položek pole můžeme použít Collections.sort() k seřazení pole.
JÁVA
// 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);> > }> }> |
Výstup
List after the use of Collection.sort() : [Code, Geeks, Practice, Quiz]
Časová složitost Arrays.sort() vs Collections.sort() :
Arrays.sort() používá algoritmus Dual-Pivot Quicksort, který poskytuje časovou složitost O(N.log N), která je obvykle rychlejší než tradiční algoritmy Quicksort. Na druhé straně Collections.sort() vytvoří pole prvků seznamu, seřadí je pomocí adaptivního algoritmu Mergesort a iteruje seznam, aby umístil každý prvek na správné místo. Tedy pro primitivní datové typy jako int, char, double atd. Arrays.sort() se ukazuje jako časově mnohem efektivnější než Collections.sort(). Problémy s primitivními datovými typy by se měly pro lepší optimalizaci pokusit vyřešit pomocí Arrays.sort().
Níže je kód, který demonstruje rozdíl:
Jáva
/*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> |
Výstup
Time taken by Arrays.sort(): 29 Time taken by Collections.sort(): 42
Tento článek má být užitečný pro vážené Geeky. .