我想对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;
参数化答案 0 :(得分:1)
对您的对象使用Comparator
或Comaparable
接口
http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
答案 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
将为您的自定义列表提供自然顺序。您似乎不需要其他比较方法。
如果不清楚,我们实际上在Comparable
和Comparator
上使用tutorial上提供的文件Github。如果你愿意,请查看。
答案 2 :(得分:0)
为&#34; Object&#34;实现compareTo方法。您存储在数组列表中的类然后在内部arraylist上为每个外部arraylists使用内置的Collections.sort()。