java - 解决比较器不为相等的元素返回 0

标签 java return comparator

有用的信息:

集成开发环境: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;
};

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

最佳答案

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

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

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

关于java - 解决比较器不为相等的元素返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65375569/

相关文章:

java - 如何在 web.xml 中包含其他配置文件

forms - MS Access 表单 - Enter 键不会移动到新行

java - 返回另一个类的时间

java - 使用 Comparator 而不是 equals() 来比较两个 Java 集合

java - 使用 DateTimeFormatterBuilder 将 String 解析为 LocalDateTime 时如何防止自动生成 'T' 字母

java - Try-Catch While 循环,Catch 不允许新输入?

java - 将 BitmapDrawable 转换为 imageView

flutter - 使用//忽略 : missing_return in an future fuction where we are using conditioning to return answer? 是个好主意吗

java - 实现 Java Comparator 的问题 - 泛型

c# - 比较 3 个对象