如何对 ArrayLists 列表(不是数组)进行排序?
How to sort a List of ArrayLists (not arrays)?
我有一个使用 ArrayLists 的 List[] 实现的邻接表。我想按 ArrayLists 大小的降序对列表进行排序。我想我会通过编写一个比较器来做到这一点……但是我该怎么做呢?或者这是不可能的,我应该换一种方式吗?
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 作为 Comparator 类型。列表有包装器 class 吗?对不起,如果这听起来没有受过教育。
我是这样制作邻接表的:
List<Integer>[] adjacency;
adjacency = (List<Integer>[]) new List[size];
for (int i = 0; i < size; ++i) {
adjacency[i] = new ArrayList<Integer>();
}
谢谢。
The code on top is not functioning.
代码无效,因为 p1 和 p2 是 ArrayList,它们没有名为 length 的字段,它们有方法 size()
,这就是您需要的。
return Integer.compare(p1.size(), p2.size());
我有一个使用 ArrayLists 的 List[] 实现的邻接表。我想按 ArrayLists 大小的降序对列表进行排序。我想我会通过编写一个比较器来做到这一点……但是我该怎么做呢?或者这是不可能的,我应该换一种方式吗?
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 作为 Comparator 类型。列表有包装器 class 吗?对不起,如果这听起来没有受过教育。
我是这样制作邻接表的:
List<Integer>[] adjacency;
adjacency = (List<Integer>[]) new List[size];
for (int i = 0; i < size; ++i) {
adjacency[i] = new ArrayList<Integer>();
}
谢谢。
The code on top is not functioning.
代码无效,因为 p1 和 p2 是 ArrayList,它们没有名为 length 的字段,它们有方法 size()
,这就是您需要的。
return Integer.compare(p1.size(), p2.size());