对ArrayList中包含对象的ArrayList进行排序

时间:2013-12-12 05:42:17

标签: java sorting arraylist

我想对ArrayList中包含对象的ArrayList进行排序。 需要根据ArrayList中的Objects的某些属性进行排序。 就像

ArrayList<ArrayList<Object>> list=new ArrayList<ArrayList<Object>>();

我想使用Collections的Sort方法。

我试过以下但是显示错误

Collections.sort(ccWrapper.colContainer, new Comparator<ArrayList<Object>>() {
public int compare(Object arg0, Object arg1) {

            // TODO Auto-generated method stub

return 0;
}});

错误:类型Comparator不是通用的;它不能用参数&gt;

参数化

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我建议您定义自己的List自定义ArrayList,并且恰好是Comparable

public class SortableList implements List<Object>, Comparable<SortableList> {
    private ArrayList delegate;

    public SortableList(List list) {
        delegate = new ArrayList(list);
    }

    @Override
    public int compareTo(SortableList s) {
        //Do what you need to do with your casts and comparisons
        return 0;
    }

    //And implement all the other methods in List by simply delegating to the ArrayList member variable
}

你也可以通过扩展ArrayList来做类似的事情并且不那么单调乏味,但我有一个真正的问题在于一个具体的课程。我认为更好地将您的课程建立在更高层次的抽象基础之上。但我离题了。

现在Comparable已经实施,你可以这样做:

List<SortableList> bigList = new ArrayList<>();
//Do stuff with bigList
Collections.sort(bigList);

您不需要Comparator,因为Comparable将为您的自定义列表提供自然顺序。您似乎不需要其他比较方法。

如果不清楚,我们实际上在ComparableComparator上使用tutorial上提供的文件Github。如果你愿意,请查看。

答案 2 :(得分:0)

为&#34; Object&#34;实现compareTo方法。您存储在数组列表中的类然后在内部arraylist上为每个外部arraylists使用内置的Collections.sort()。