logo

Collections.sort() i Java med exempel

 

java.util.Collections.sort() metod finns i klassen java.util.Collections. Den används för att sortera de element som finns i den angivna lista av samlingen i stigande ordning. Det fungerar liknande java.util.Arrays.sort() metod men det är bättre än eftersom det kan sortera elementen i Array samt länkad listkö och många fler som finns i den.

public static void sort(List myList)  

myList : A List type object we want to sort.

This method doesn't return anything

Exempel:

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

Sortera en ArrayList i stigande ordning



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

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

Tidskomplexitet : O(N log N) eftersom tidskomplexiteten för Collections.sort() är O(nlog(n)).
Hjälputrymme : O(1)  

Sortera en ArrayList i fallande ordning  

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

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

Tidskomplexitet: O(N log N) eftersom tidskomplexiteten för Collections.sort() är O(nlog(n)).
Hjälputrymme: O(1)  

Sortera en ArrayList enligt användardefinierade kriterier. Vi kan använda Jämförelsegränssnitt för detta ändamål. 

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

Produktion
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 fungerar för arrayer som också kan vara av primitiv datatyp. Samlingar .sort() fungerar för objekt som samlingar som ArrayList Länkad lista etc. Vi kan använda Collections.sort() för att sortera en array efter att ha skapat en ArrayList med givna arrayobjekt.
 

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

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

Arrays.sort() vs Collections.sort() tidskomplexitet:

Arrays.sort() använder en Dual-Pivot Quicksort-algoritm som ger en tidskomplexitet på O(N.log N) som vanligtvis är snabbare än traditionella Quicksort-algoritmer. Å andra sidan skapar Collections.sort() en array av listelement och sorterar dem med hjälp av en adaptiv Mergesort-algoritm och itererar över listan för att placera varje element på rätt plats. Således för primitiva datatyper som int char double etc. Arrays.sort() visar sig vara mycket mer tidseffektiv än Collections.sort(). Problem som involverar primitiva datatyper bör försöka lösas med Arrays.sort() för bättre optimering.

Nedan är koden för att visa skillnaden:

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 

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

Artikeln önskas vara användbar för de uppskattade nördarna. .