原始long的有效compareTo()

tra*_*veh 7 java compareto

在排序列表上工作我得到了一个点,我需要为原始long值实现compareTo()函数.

不是在寻找明显天真的实现,但是想知道是否有一个优雅的单行代码来做(不创建新的Long(值)).

也许是这样的:

@Override public int compareTo(MyClass that) {
    return (int) ((value - that.value) >>> 32);
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以验证是否可以工作和/或建议另一个实现?

Evg*_*eev 13

一个班轮代码:

int res = Long.compare(long x, long y) 
Run Code Online (Sandbox Code Playgroud)

您的代码无法正常运行所有值,请尝试Integer.MIN_VALUE - Integer.MAX_VALUE,您将获得+1

  • @traveh 我会说性能的正确性。此外,无论如何,该方法可能已经被JDK优化了。 (2认同)