logo

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

змінні nginx
>

>

Вихід

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

рядковий масив Java
>

>

Вихід

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




помилка атрибута python

// 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>

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