使用?
重新排序ArrayList的想法有多糟糕id
其中参数为:
Collections.sort(list, descendingComparator );
它似乎有效,步数不是无限的, 但我担心这是依赖于OS版本的。
答案 0 :(得分:3)
这是一个坏主意,因为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());