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'更清晰。 –