首页 > 解决方案 > Solve Comparator 不为相等的元素返回 0

问题描述

有用的信息:

IDE:IntelliJ 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;
};

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

标签: javareturncomparator

解决方案


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

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

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


推荐阅读