基于字段对ArrayList进行排序?

时间:2010-11-22 02:44:22

标签: java sorting arraylist

您好 我有一个arrayList,它有一些对象。另外我的对象有两个字段(1)name(2)cost 我想用它的cost field对这个arrayList进行排序。是否有任何特殊方法可以为我做,或者我应该自己写呢?如果有一些方法可以做到这一点,它的时间复杂度是多少(O(n),( O(nlogn))?

感谢

3 个答案:

答案 0 :(得分:4)

如果您喜欢输入saftey(不使用BeanComparator),那么您需要编写自己的比较器。

e.g。

Collections.sort(list, new Comparator<SomeType>() {
    public int compareTo(SomeType lhs, SomeType rhs) {
        return lhs.getCost().compareTo(rhs.getCost());
    }
});

注意,这不是null安全的(可以为null?)。

另一个选项是使用BeanComparator,但请确保添加一个测试,以确保排序始终有效,以防方法名称发生变化。

答案 1 :(得分:2)

如果为需要比较的对象实现Comparator接口,则可以使用Collections.sort()方法进行排序。

答案 2 :(得分:0)

查看Bean Comparator的几个选项。