solve比较器不返回0

flseospp  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(656)

有用信息:

ide:智能jdk:8u271

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

Comparator does not return 0 for equal elements

警告突出显示

(a, b)

在这行代码中。

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

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

6mzjoqzu

6mzjoqzu1#

必须添加一个case来检查两个值是否相等比较器应该返回0。现在它会回来的 -1 或者 1 .

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

这对你有好处。将比较的责任委托给integer类compare方法。

iyr7buue

iyr7buue2#

合同 Comparator 界面显示:
比较其两个参数的顺序。当第一个参数小于、等于或大于第二个参数时,返回负整数、零或正整数。
这个警告告诉您comparator从不返回零,我假设您可以从检查代码中看到这一点。
在比较器的意义上,当两个实体对象相等时,可以通过使比较器返回零来解决警告,而不是实际检查两个对象是否相等。

相关问题