将long转换为int,保持正/负/ 0

Fre*_*ind 5 java integer long-integer

我想实现一个java.util.Comparator具有Long:

new Comparator<Long>() {
    public int compare(Long l1, Long l2) {
        // (*)
    }
}
Run Code Online (Sandbox Code Playgroud)

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

return l1==l2 ? 0 : (l1>l2 ? 1 : -1);
Run Code Online (Sandbox Code Playgroud)

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

(我在尝试return (int)(l1-l2),但这是不正确的).

Jon*_*eet 12

这很容易 - Long本身提供了一个实现:

public int compare(Long l1, Long l2) {
    return l1.compareTo(l2);   
}
Run Code Online (Sandbox Code Playgroud)

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

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