我想用java.util.Comparator
实现Long
:
new Comparator<Long>() {
public int compare(Long l1, Long l2) {
// (*)
}
}
我有一个运营商?:
的解决方案:
return l1==l2 ? 0 : (l1>l2 ? 1 : -1);
但我想知道是否还有其他方法可以实现它。
(我正在尝试return (int)(l1-l2)
,但这是不正确的。)
答案 0 :(得分:12)
这很简单 - Long
本身提供了一个实现:
public int compare(Long l1, Long l2) {
return l1.compareTo(l2);
}
另一方面,那时我不知道为什么你有一个自定义比较器......
编辑:如果您实际比较long
值并且您正在使用Java 1.7,则可以使用Long.compare(long, long)
。否则,请使用当前的实现。
答案 1 :(得分:2)
不,这是唯一有效的方法。这个话题已经讨论了很多次。当然,java.lang.Long
已经实现了compareTo函数,但它具有与您完全相同的实现。