gpt4 book ai didi

java - Collections.sort 与比较器返回常量

转载 作者:行者123 更新时间:2023-12-01 22:20:11 25 4
gpt4 key购买 nike

使用 ArrayList 重新排序是多么糟糕的想法?

Collections.sort(list, descendingComparator );

其中参数是:

ArrayList<Map> list;

descendingComparator = new Comparator<Map>() {
@Override
public int compare(Map lhs, Map rhs) {
return -1;
}
};

看起来可行,而且步骤数不是无限的,但我担心这与操作系统版本有关。

最佳答案

这是一个坏主意,因为 compare()方法应该是双向的: if a < b然后b > a这个比较器不会这样做。如果compare()不是这样工作的,结果是未定义的行为。它可能有效,可能无效,也可能不一致。

理想的方法是将另一个比较器包装在一个相反的比较器中:

final Comparator<Map> someOtherComparator = ...;
descendingComparator = new Comparator<Map>() {
@Override
public int compare(Map lhs, Map rhs) {
// Note the parameters are swapped here
return someOtherComparator.compare(rhs, lhs);
}
};

您也可以这样做:

Collections.sort(list, comparator);
Collections.reverse(list);

最后,如果您的列表元素具有自然排序(实现 Comparable ,而 Map 则没有),您可以执行以下操作:

Collections.sort(list, Collections.reverseOrder());

关于java - Collections.sort 与比较器返回常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021021/

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