【发布时间】:2012-04-11 13:15:09
【问题描述】:
我想用Long 实现java.util.Comparator:
new Comparator<Long>() {
public int compare(Long l1, Long l2) {
// (*)
}
}
我有一个运营商?:的解决方案:
return l1==l2 ? 0 : (l1>l2 ? 1 : -1);
但我想知道是否有其他方法可以实现它。
(我在尝试return (int)(l1-l2),但它不正确)。
【问题讨论】:
-
你为什么要改变你的实现?没错。
-
return (int)Math.signum(l1-l2)? -
@assylias 然后您将 long 转换为 double,然后再次将 double 转换回 int。此外,该解决方案可能不适用于所有 long (例如,在 2^60 和 2^60-1 上返回 0)
-
@dtech 显然效率不高,但响应“(我正在尝试返回 (int)(l1-l2),但它不正确)。”
标签: java integer long-integer