gpt4 book ai didi

java - Guava ComparisonChain 为什么在第一次比较返回非零结果后不终止

转载 作者:行者123 更新时间:2023-12-02 04:16:53 27 4
gpt4 key购买 nike

Guava 中的比较链是否不应该延迟评估比较?在下面的代码中,NullComparator (apache) 将返回一个非零值,链是否应该终止?

来自docs :一旦其中一个返回非零结果,ComparisonChain 实现就会停止调用其输入的compareTo 和compare 方法

    String x = null;
String y = "y";
ComparisonChain.start().compare(x,y, new NullComparator(false)).
compare(x.getBytes().toString(), y.getBytes().toString()).result();

注意:以上只是一个例子。也许这会是更好的例子

ComparisonChain.start().compare(x,y, new NullComparator(false)).
compare(x.getBytes(), y.getBytes(), UnsignedBytes.lexicographicalComparator()).result();

最佳答案

没有什么可以阻止 Java 计算 compare()参数,即使该方法什么也不做。 x.getBytes() 将抛出 NPE,因为 xnull

也许这会起作用?

return Ordering.onResultOf(new Function<String, String>() {
@Override
public String apply(String input) {
return input.getBytes().toString();
}
})
.nullsFirst()
.compare(x, y);

请记住,input.getBytes().toString() 排序可能没有多大意义(它看起来像 [B@35c41b >).

关于java - Guava ComparisonChain 为什么在第一次比较返回非零结果后不终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com