我有一个使用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());

10-02 00:47