Collections.sort() у Java з прикладами

java.util.Collections.sort() метод присутній у класі java.util.Collections. Він використовується для сортування елементів, присутніх у вказаному список колекції в порядку зростання. Це працює подібно до java.util.Arrays.sort() метод, але він кращий, ніж оскільки він може сортувати елементи масиву, а також пов’язаний список, чергу та багато іншого, що в ньому присутні.

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

приклад:

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'} 

Сортування ArrayList у порядку зростання

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);> > }> }>

Вихід

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

Часова складність : O(N log N) як часова складність Collections.sort() становить O(nlog(n)).
Допоміжний простір : O(1)

Сортування ArrayList у порядку спадання

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);> > }> }>

Вихід

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

Часова складність: O(N log N) як часова складність Collections.sort() дорівнює O(nlog(n)).
Допоміжний простір: О(1)

Сортування ArrayList відповідно до визначених користувачем критеріїв. Ми можемо використовувати Інтерфейс компаратора Для цієї мети.

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)); } }>

Вихід

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

Arrays.sort() проти Collections.sort() Arrays.sort працює для масивів, які також можуть мати простий тип даних. Колекції .sort() працює для таких об’єктів, як колекції ArrayList , LinkedList і т. д. Ми можемо використовувати Collections.sort() для сортування масиву після створення ArrayList заданих елементів масиву.

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);> > }> }>

Вихід

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

Часова складність Arrays.sort() проти Collections.sort():

Arrays.sort() використовує алгоритм Dual-Pivot Quicksort, який дає часову складність O(N.log N), що зазвичай швидше, ніж традиційні алгоритми Quicksort. З іншого боку, Collections.sort() створює масив елементів списку, сортує їх за допомогою адаптивного алгоритму Mergesort і повторює список, щоб позиціонувати кожен елемент у правильному місці. Таким чином, для примітивних типів даних, таких як int, char, double тощо, Arrays.sort() виявляється набагато ефективнішим у часі, ніж Collections.sort(). Проблеми, пов’язані з примітивними типами даних, слід спробувати вирішити за допомогою Arrays.sort() для кращої оптимізації.

Нижче наведено код для демонстрації різниці:

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>

Вихід

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

Бажаю, щоб стаття була корисною для шановних гіків. .