gpt4 book ai didi

java - 开箱即用的 Java 直接比较器

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:40 25 4
gpt4 key购买 nike

我有一个方法,它的一个参数需要一个 Comparator。我想传递一个执行正常比较的Comparator和一个执行反向比较的reverse比较器。

java.util.Collections 提供了一个 reverseOrder() 这对反向比较很有用,但我找不到任何正常的 Comparator .

我想到的唯一解决方案是 Collections.reverseOrder(Collections.reverseOrder())。但我不喜欢它,因为内部调用了 double 方法。

当然我可以像这样写一个NormalComparator:

public class NormalComparator<T extends Comparable> implements Comparator<T> {
public int compare(T o1, T o2) {
return o1.compareTo(o2);
}
}

但我真的很惊讶 Java 没有开箱即用的解决方案。

最佳答案

大多数可以指定 Comparator 的地方也有一个完全不使用 Comparator 的版本,在这种情况下它使用自然顺序(即它期望所有对象实现 Comparable 并使用 compareTo)。

因此通常的解决方案是根本不指定 Comparator。您是否遇到过 Comparator 方法受支持的特定情况?

如果您绝对需要它,Google Collections (以及 Guava ,它是 Google Collections 的超集)提供 Ordering.natural()返回 a Ordering object表示由 Comparable 接口(interface)定义的自然顺序。 Ordering 实现了 Comparator,因此您可以简单地使用它。

关于java - 开箱即用的 Java 直接比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956612/

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