通过for循环将子列表添加到arraylist

时间:2014-12-02 15:13:42

标签: java arraylist sublist

如何将使用for循环创建的子列表添加到ArrayList?考虑到子列表的数量可能是数百甚至数千。我知道下面的代码是不行的,因为addAll需要有一个列表作为参数,但它是我之后的那种东西。

List<Integer> list1 = arrayList.subList(0, 3);
List<Integer> list2 = arrayList.subList(3, 6);
List<Integer> list3 = arrayList.subList(6, 9);
ArrayList<Integer> newArray = new ArrayList<Integer>();
for (int i = 0; i < 3; i++) {
    String listNum = "list" + i;
    newArray.addAll(listNum);
}

3 个答案:

答案 0 :(得分:3)

你不能解决&#34;索引的局部变量 - 你需要一个数组:

List<Integer>[] list = new List<Integer>[] {
    arrayList.subList(0, 3)
,   arrayList.subList(3, 6)
,   arrayList.subList(6, 9)
};
ArrayList<Integer> newArray = new ArrayList<Integer>();
for (int i = 0; i < 3; i++) {
    newArray.addAll(list.get(i));
}

在您的具体示例中,您可以动态构建子列表,而无需将它们存储在数组中:

ArrayList<Integer> newArray = new ArrayList<Integer>();
for (int i = 0; i < 3; i++) {
    newArray.addAll(arrayList.subList(3*i, 3*(i+1)));
}

答案 1 :(得分:0)

List<List<Integer>> list = new ArrayList<List<Integer>>();
list.add(arrayList.subList(0, 3));
list.add(arrayList.subList(3, 6));
list.add(arrayList.subList(6, 9));
ArrayList<Integer> newArray = new ArrayList<Integer>();
for (int i = 0; i < list.size(); i++) {
    newArray.addAll(list.get(i));
}

您可以创建一个列表列表并循环遍历该列表,将每个子列表的内容添加到newArray。

答案 2 :(得分:0)

为什么不列出列表或列表数组:

List<List<Integer>> finalList = Arrays.asList(list1, list2, list3);

for (List<Integer> list : finaList) {
    newArray.add(list);
}
相关问题