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<String> al = new ArrayList<String>();   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() :n' + 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<String> al = new ArrayList<String>();   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() :n' + 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<Student>  {   // 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<Student> ar = new ArrayList<Student>();   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<ar.size(); i++)   System.out.println(ar.get(i));   Collections.sort(ar new Sortbyroll());   System.out.println('nSorted by rollno');   for (int i=0; i<ar.size(); 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() :n' +   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<Integer> 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 

Желанието е статията да бъде полезна за уважаемите маниаци. .