3 回答
TA贡献1824条经验 获得超5个赞
以这些数字为例:4, 7, 2, 7, 42, 3, 4 ,9 和 5。
假设我要求你对它们进行排序。你会怎么做?您是按升序、降序还是使用其他方法对它们进行排序。
那么答案是,您不会知道如何对它们进行排序,因为我没有为您提供足够的信息。
Arrays.sort
处于类似的未知位置。你想让它为你排序一些东西,但简单地说,Arrays.sort
不知道如何排序。您必须解释Arrays.sort
您希望数组如何排序。你解释这个的方式Arrays.sort
是实现Comparable
接口。
至于这种设计如何为您节省时间。嗯,它以一种微妙的方式这样做:如果您实现Comparable
,那么您会自动使用任何知道如何使用 的方法(想想算法)Comparable
。这同样适用于实现其他接口。
TA贡献1841条经验 获得超3个赞
将public static void sort(Object[] a)
在所有对象必须实现的Javadoc指定的方法Comparable
接口。这是在实现中假设的,您可以在其中找到下一行。
Comparable pivot = (Comparable) a[start];
如果您的元素未实现可比较,则会产生运行时异常。
其他sort
方法要么用于本质上具有可比性的类型(例如,原始类型),要么需要您提供Comparator
.
TA贡献1858条经验 获得超8个赞
尽管您有Arrays.sort((T[] a, Comparator<? super T> c))
接受显式的方法Comparator
,但您不希望定义内联Comparator
或创建特殊Comparator
类来保持代码紧凑和可读。
休息是你的选择。你有两种选择,选择适合你的。
添加回答
举报