Array.sort() 实现可比吗?当我查看数组类时,它没有,那么这里的排序是如何工作的?



这里是如何进行排序的,因为我可以看到Arrays类没有实现Comparable

//Add values to Array
int arrayname[]=new int[3];
arrayname[0]=40;
arrayname[1]=10;
arrayname[2]=35;

//Sort the elements
Arrays.sort(arrayname);

//Display values  
System.out.println("Values in Array After Sorting:");
for(int i=0;i<arrayname.length;i++){
System.out.print(arrayname[i]+", ");
} 

不必如此。它使用类型的compareTo方法。这意味着在对象的情况下,您需要实现Comparable<T>接口。

请参阅https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(java.lang.Object[](

对于原始类型,它们已经有了自然的排序。

您还可以传递lambda或方法引用以进行自定义排序。

如果查看Arrays.sort()代码,它在内部使用一个名为ComparableTimSort的类。这个类有一个方法ComparableTimSort.binarySort(Object[] a, int lo, int hi, int start),它实际上期望参数a中的元素是Comparable

由于Arrays.sort()static方法,是一种实用方法,因此Arrays不直接实现Comparable。传递给它的数组中的元素需要是Comparable

相关内容

最新更新