java.util.Collections.sort() metoda jest obecna w klasie java.util.Collections. Służy do sortowania elementów występujących w określonym lista kolekcji w kolejności rosnącej. Działa podobnie java.util.Arrays.sort() metoda, ale jest lepsza niż możliwość sortowania elementów tablicy, a także połączonej listy, kolejki i wielu innych znajdujących się w niej.
public static void sort(List myList) myList : A List type object we want to sort. This method doesn't return anything>
Przykład:
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'}>
Sortowanie listy ArrayList w porządku rosnącym
JAWA
// 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);> > }> }> |
przejście przezroczystości CSS
>
>Wyjście
List after the use of Collection.sort() : [Dear, Friends, Geeks For Geeks, Is, Superb]>
Złożoność czasu : O(N log N), ponieważ złożoność czasowa Collections.sort() wynosi O(nlog(n)).
Przestrzeń pomocnicza : O(1)
Sortowanie listy ArrayList w kolejności malejącej
JAWA
Python generuje uuid
// 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);> > }> }> |
>
>Wyjście
List after the use of Collection.sort() : [Superb, Is, Geeks For Geeks, Friends, Dear]>
Złożoność czasowa: O(N log N), ponieważ złożoność czasowa Collections.sort() wynosi O(nlog(n)).
Przestrzeń pomocnicza: O(1)
Sortowanie ArrayList według kryteriów zdefiniowanych przez użytkownika. Możemy użyć Interfejs komparatora w tym celu.
Jawa
// 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)); } }> |
>
>Wyjście
Unsorted 111 bbbb london 131 aaaa nyc 121 cccc jaipur Sorted by rollno 111 bbbb london 121 cccc jaipur 131 aaaa nyc>
Tablice.sort() vs Kolekcje.sort() Arrays.sort działa w przypadku tablic, które mogą być również prymitywnymi typami danych. Kolekcje .sort() działa dla kolekcji obiektów takich jak Lista tablic , Połączona lista itp. Możemy użyć Collections.sort() do sortowania tablicy po utworzeniu ArrayList danych elementów tablicy.
JAWA
wiek dharmendry
// 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);> > }> }> |
>
>Wyjście
List after the use of Collection.sort() : [Code, Geeks, Practice, Quiz]>
Złożoność czasowa Arrays.sort() vs Collections.sort() :
Arrays.sort() wykorzystuje algorytm Quicksort Dual-Pivot, który daje złożoność czasową O(N.log N), która jest zazwyczaj szybsza niż tradycyjne algorytmy Quicksort. Z drugiej strony funkcja Collections.sort() tworzy tablicę elementów listy, sortuje je przy użyciu adaptacyjnego algorytmu Mergesort i wykonuje iterację po liście, aby umieścić każdy element we właściwym miejscu. Zatem w przypadku prymitywnych typów danych, takich jak int, char, double itp. metoda Arrays.sort() okazuje się znacznie bardziej wydajna czasowo niż Collections.sort(). Problemy związane z prymitywnymi typami danych należy próbować rozwiązać za pomocą Arrays.sort() w celu lepszej optymalizacji.
wiek Hrithika Roshana
Poniżej znajduje się kod ilustrujący różnicę:
Jawa
/*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> |
>
>Wyjście
Time taken by Arrays.sort(): 29 Time taken by Collections.sort(): 42>
Artykuł ma być przydatny dla cenionych Geeków. .