对于相等的元素,解决比较器不 return 0
Solve Comparator does not return 0 for equal elements
有用信息:
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;
};
警告的含义是什么,我该如何解决?
您必须添加一个案例来检查两个值是否相等比较器应该 return 0。现在它将 return -1
或 1
.
private final Comparator<Entity> renderSorter = (a, b) -> {
return Integer.compare(a.getY() + a.getHeight(), b.getY() + b.getHeight());
};
这将为您解决问题。将比较的责任委托给整数 class 比较方法。
Comparator
接口的契约说:
Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
该警告告诉您 Comparator 永远不会 return 为零,我想您可以通过检查代码看到这一点。
当两个 Entity 对象相等时,您可以通过将 Comparator return 设为零来解决警告,在 Comparator 的意义上,而不是实际检查两个平等对象。
有用信息:
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;
};
警告的含义是什么,我该如何解决?
您必须添加一个案例来检查两个值是否相等比较器应该 return 0。现在它将 return -1
或 1
.
private final Comparator<Entity> renderSorter = (a, b) -> {
return Integer.compare(a.getY() + a.getHeight(), b.getY() + b.getHeight());
};
这将为您解决问题。将比较的责任委托给整数 class 比较方法。
Comparator
接口的契约说:
Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
该警告告诉您 Comparator 永远不会 return 为零,我想您可以通过检查代码看到这一点。
当两个 Entity 对象相等时,您可以通过将 Comparator return 设为零来解决警告,在 Comparator 的意义上,而不是实际检查两个平等对象。