我有一个使用ArrayLists的List []实现的邻接表。我想按ArrayLists大小的降序对List进行排序。我以为我会写一个Comparator来做到这一点。。。但是我该怎么做呢?还是这是不可能的,我应该换一种方式?
Collections.sort(adjacency, new Comparator<ArrayList<Integer>()>() {
public int compare(ArrayList<Integer> p1, ArrayList<Integer> p2) {
return Integer.compare(p1.length, p2.length);
}
});
最上面的代码不起作用。我尝试仅使用ArrayList,List [],List作为比较器类型。有列表的包装器类吗?抱歉,这听起来似乎没有根据。
这是我制成邻接表的方式:
List<Integer>[] adjacency;
adjacency = (List<Integer>[]) new List[size];
for (int i = 0; i < size; ++i) {
adjacency[i] = new ArrayList<Integer>();
}
谢谢。
最佳答案
最上面的代码不起作用。
该代码不起作用,因为p1和p2是ArrayList,并且它们没有名为length的字段,它们具有方法size()
,这就是您所需要的。
return Integer.compare(p1.size(), p2.size());