3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
以這些數(shù)字為例:4, 7, 2, 7, 42, 3, 4 ,9 和 5。
假設(shè)我要求你對(duì)它們進(jìn)行排序。你會(huì)怎么做?您是按升序、降序還是使用其他方法對(duì)它們進(jìn)行排序。
那么答案是,您不會(huì)知道如何對(duì)它們進(jìn)行排序,因?yàn)槲覜]有為您提供足夠的信息。
Arrays.sort
處于類似的未知位置。你想讓它為你排序一些東西,但簡單地說,Arrays.sort
不知道如何排序。您必須解釋Arrays.sort
您希望數(shù)組如何排序。你解釋這個(gè)的方式Arrays.sort
是實(shí)現(xiàn)Comparable
接口。
至于這種設(shè)計(jì)如何為您節(jié)省時(shí)間。嗯,它以一種微妙的方式這樣做:如果您實(shí)現(xiàn)Comparable
,那么您會(huì)自動(dòng)使用任何知道如何使用 的方法(想想算法)Comparable
。這同樣適用于實(shí)現(xiàn)其他接口。

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
將public static void sort(Object[] a)
在所有對(duì)象必須實(shí)現(xiàn)的Javadoc指定的方法Comparable
接口。這是在實(shí)現(xiàn)中假設(shè)的,您可以在其中找到下一行。
Comparable pivot = (Comparable) a[start];
如果您的元素未實(shí)現(xiàn)可比較,則會(huì)產(chǎn)生運(yùn)行時(shí)異常。
其他sort
方法要么用于本質(zhì)上具有可比性的類型(例如,原始類型),要么需要您提供Comparator
.

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
盡管您有Arrays.sort((T[] a, Comparator<? super T> c))
接受顯式的方法Comparator
,但您不希望定義內(nèi)聯(lián)Comparator
或創(chuàng)建特殊Comparator
類來保持代碼緊湊和可讀。
休息是你的選擇。你有兩種選擇,選擇適合你的。
添加回答
舉報(bào)