Collections vs Arrays regarding sort() What is the difference between these two regarding sort() method? I know Arrays\' sort() is using binary search for sort(), what about Co
Well, besides operating on different stuff (Collections.sort
operates on a List
, and Arrays.sort
operates on an array), java.util.Collections.sort() simply calls java.util.Arrays.sort() to do the heavy lifting.
Also, for what it's worth, notice that Arrays.sort
runs a merge sort.
I know Arrays' sort() is using binary search for sort()
No, you don't know any such thing. It doesn't do that. See the Javadoc.
The statement doesn't even make sense. You can't 'use binary search for sort'. Binary search only worked when the data is already sorted. Maybe what you read is that Arrays.binarySearch()
assumes the data is sorted.
As the other answers have said, you would use Collections.sort() when dealing with an object that implements the Collection interface and the Arrays.sort() method when dealing with an Array.
A related question is what type of data structures are better if you want to sort a set of values. If you need to use a List, then I would suggest using a LinkedList since insertions run in O(1) where something like an ArrayList would be O(n).
You could also opt for using a SortedSet if there will be no duplicates or having duplicates is unwanted. That way you don't have to bother with using an external sort method.
Collections.sort() Operates on List Whereas Arrays.sort() Operates on an Array.
Arrays.sort() uses Dual-Pivot Quicksort for Primitive Arrays and MergeSort for sorting array of Objects.
Example of Collections.sort() :
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(15);
arr.add(10);
arr.add(5);
arr.add(2);
Collections.sort(arr);
Example of Arrays.sort() :
int[] arr = new int[4]
arr[0]=15;
arr[1]=10;
arr[2]=5;
arr[3]=2;
Arrays.sort(arr);
Use Arrays.sort() if you're dealing with an Array. Use Collections.sort() if you're dealing with something that implements the Collection interface (eg ArrayList).
public static void sort(T[] a)
Parameters:
a - the array to be sorted
Implementation note (truncated):
public static <T extends Comparable<? super T>> void sort(List list)
Parameters:
list - the list to be sorted.
Implementation note (truncated):