如何对ArrayLists列表(不是数组)进行排序?

时间:2017-03-16 21:50:14

标签: java list sorting arraylist comparator

我有一个使用ArrayLists的List []实现的邻接列表。我想按照ArrayLists的大小的降序对List进行排序。我想我会通过写一个比较器来做到这一点......但是我该怎么办呢?或者这是不可能的,我应该采取另一种方式吗?

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>();
}

谢谢。

1 个答案:

答案 0 :(得分:2)

  

顶部的代码无效。

代码无效,因为p1和p2是ArrayLists,并且它们没有名为length的字段,它们的方法为size(),这就是您所需要的。

return Integer.compare(p1.size(), p2.size());