Collections.sort与Comparator返回常量

时间:2015-05-04 00:35:35

标签: java android

使用?

重新排序ArrayList的想法有多糟糕
id

其中参数为:

Collections.sort(list, descendingComparator );

它似乎有效,步数不是无限的, 但我担心这是依赖于OS版本的。

1 个答案:

答案 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());
相关问题