KAR*_*ván 5 java collections comparable comparator guava
我有一个方法需要一个Comparator参数.我想传递一个Comparator其中做了正常比较和一个反向,其确实在反向比较器.
java.util.Collections提供一个reverseOrder()这对反向比较有好处,但我找不到任何正常的Comparator.
我想到的唯一解决方案是Collections.reverseOrder(Collections.reverseOrder()).但我不喜欢它因为调用里面的双重方法.
当然我可以这样写NormalComparator:
public class NormalComparator<T extends Comparable> implements Comparator<T> {
public int compare(T o1, T o2) {
return o1.compareTo(o2);
}
}
Run Code Online (Sandbox Code Playgroud)
但我真的很惊讶Java没有开箱即用的解决方案.
您可以指定a的大多数地方Comparator也有一个版本而根本不使用a Comparator在这种情况下它使用自然顺序(即它期望所有对象实现Comparable和使用compareTo).
因此,通常的解决方案是根本不指定一个Comparator.你有一个地方的具体情况只有在Comparator被支持的方法?
如果你绝对需要它,Google Collections(以及Guava,它是Google Collections的超集)提供了Ordering.natural()返回一个Ordering对象,该对象代表Comparable界面定义的自然顺序.Ordering实现Comparator,所以你可以简单地使用它.
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |