解决比较器对于相等元素不返回 0

L0r*_*o C 2 java return comparator

有用的信息:

IDE:IntelliJ JDK:8u271

我有一个我不理解的警告,也不知道如何解决它。警告:

Comparator does not return 0 for equal elements
Run Code Online (Sandbox Code Playgroud)

警告亮点

(a, b)
Run Code Online (Sandbox Code Playgroud)

在这行代码中。

private final Comparator<Entity> renderSorter = (a, b) -> {
    if (a.getY() + a.getHeight() < b.getY() + b.getHeight())
        return -1;
    return 1;
};
Run Code Online (Sandbox Code Playgroud)

该警告的含义是什么以及如何解决?

小智 5

您必须添加一个案例来检查两个值是否相等,比较器应该返回 0。现在它将返回-1or 1

private final Comparator<Entity> renderSorter = (a, b) -> {
    return Integer.compare(a.getY() + a.getHeight(), b.getY() + b.getHeight()); 
};
Run Code Online (Sandbox Code Playgroud)

这将为你解决问题。将比较的责任委托给 Integer 类的比较方法。