gpt4 book ai didi

java - 如何将 ArrayList 拆分为 ArrayList>?

转载 作者:行者123 更新时间:2023-12-02 04:16:14 25 4
gpt4 key购买 nike

我对 java 很陌生,正在尝试创建一个 ArrayList<ArrayList<Integer>>来自ArrayList<Integer> (将 28800 个数据点分成 300 个)。

public static ArrayList<ArrayList<Integer>> createListOfArrays(ArrayList<Integer> list) {

ArrayList<ArrayList<Integer>> listOfArrays = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> temp = new ArrayList<Integer>();

for (int i = 0; i < list.size(); i++) {
int arrayInt = list.get(i);
temp.add(arrayInt);

if (temp.size() % 300 == 0) {
listOfArrays.add(temp);
temp.clear();
}
}

return listOfArrays;

System.out.println(listOfArrays.size());
System.out.println(listOfArrays.get(0).size());
}

我的打印语句给出的正确尺寸为 96 ArrayLists但它们都是空的。如果我删除 temp.clear()它们都由 28800 Integers 组成。

我需要96 * 300不同ArrayListsArraylist

最佳答案

它们是空的,因为您在添加列表后立即清除列表 - 将 temp 添加到 listOfArrays 不会复制它。您只是多次将相同的列表添加到 listOfArrays 中。

您可以使用 List.subList 从列表中提取 300 个元素 block 来更轻松地完成此操作:

for (int i = 0; i < list.size(); i += 300) {
// Extract a view of this block of (up to) 300 elements.
List<E> subList = list.subList(i, Math.min(i+300, list.size()));
// Copy it into a new list since we require an ArrayList to add
// to `listOfArrays`.
ArrayList<E> copy = new ArrayList<>(subList);
// Put it into the result.
listOfArrays.add(copy);
}

关于java - 如何将 ArrayList<E> 拆分为 ArrayList<ArrayList<E>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com