5

我想实现一个java.util.Comparatorwith Long

new Comparator<Long>() {
    public int compare(Long l1, Long l2) {
        // (*)
    }
}

我有一个运营商的解决方案?:

return l1==l2 ? 0 : (l1>l2 ? 1 : -1);

但我想知道是否还有其他方法可以实现它。

(我正在尝试return (int)(l1-l2),但它不正确)。

4

2 回答 2

12

这很简单——Long它本身提供了一个实现:

public int compare(Long l1, Long l2) {
    return l1.compareTo(l2);   
}

另一方面,那时我不确定你为什么有一个自定义比较器......

编辑:如果您实际上是在比较long值并且使用的是 Java 1.7,则可以使用Long.compare(long, long). 否则,请使用您当前的实现。

于 2012-04-11T13:16:42.173 回答
2

不,这是唯一有效的方法。这个话题已经讨论过很多次了。当然,java.lang.Long已经实现了 compareTo 函数,但它与您的实现完全相同。

于 2012-04-11T13:16:25.797 回答