Java 8在List
接口上引入了一種新的默認方法來對其進行排序。它的簽名是:爲什麼list.sort不使用可選API
void sort(Comparator<? super E> c)
文檔說:
如果指定的比較爲null,則在此列表中 所有元素都必須實現Comparable接口和元素的自然 順序應該被使用。
所以,如果你想通過它的自然順序排序列表(和您的元素具有可比性),你所要做的list.sort(null);
這是一種奇怪的我的意見的。
如果他們使用的是Optional
,那麼doc會聲明您可以選擇提供一個比較器,如果沒有提供,它會假定這些元素已經可以比較。
A list.sort(null);
呼叫將被轉換爲list.sort(Optional.empty());
。
由於它是一種暴露於外部世界的方法,我會發現它更準確。
爲什麼他們沒有使用新的可選API呢?
...或者只是強迫你傳入一個非空的比較器。我認爲這將會更容易。 –
...或匹配'Collections',它提供了一個重載'sort()',它不會使用任何'Comparator'參數來按自然順序排序? – rgettman
或者只是通過'Comparator.naturalOrder()',它並不那麼難,而且比'null'更清晰。 –