sun*_*nny 2 java guava comparisonchain
番石榴的比较链是不应该懒惰地评价比较?在下面的代码中NullComparator(阿帕奇)将返回一个非零值,如果不链终止?
从文档:ComparisonChain实现停止调用其输入'compareTo并比较方法一旦其中一个返回非零结果
String x = null;
String y = "y";
ComparisonChain.start().compare(x,y, new NullComparator(false)).
compare(x.getBytes().toString(), y.getBytes().toString()).result();
Run Code Online (Sandbox Code Playgroud)
注意:上面只是一个例子.也许这将是更好的例子
ComparisonChain.start().compare(x,y, new NullComparator(false)).
compare(x.getBytes(), y.getBytes(), UnsignedBytes.lexicographicalComparator()).result();
Run Code Online (Sandbox Code Playgroud)
没有任何东西可以从评估停止的Java 参数来compare(),即使该方法不执行任何操作. x.getBytes()因为会抛出NPE x是null.
也许这会起作用?
return Ordering.onResultOf(new Function<String, String>() {
@Override
public String apply(String input) {
return input.getBytes().toString();
}
})
.nullsFirst()
.compare(x, y);
Run Code Online (Sandbox Code Playgroud)
请记住,虽然input.getBytes().toString()排序可能没有多大意义(看起来像[B@35c41b).
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |