我有一个 ArrayList
,我想将其分成更小的 List
n
大小的对象,并对每个对象执行操作。我当前执行此操作的方法是使用 ArrayList
Java 对象实现的。任何伪代码都可以。
for (int i = 1; i <= Math.floor((A.size() / n)); i++) {
ArrayList temp = subArray(A, ((i * n) - n),
(i * n) - 1);
// do stuff with temp
}
private ArrayList<Comparable> subArray(ArrayList A, int start,
int end) {
ArrayList toReturn = new ArrayList();
for (int i = start; i <= end; i++) {
toReturn.add(A.get(i));
}
return toReturn;
}
其中 A
是列表, n
是所需列表的大小
我相信这种方式在处理规模高达 100 万的相当大的列表时会花费太多时间,所以我试图找出更有效的方法。
原文由 Rowhawn 发布,翻译遵循 CC BY-SA 4.0 许可协议
你会想要做一些利用 List.subList(int, int) 视图的事情,而不是复制每个子列表。要真正轻松地做到这一点,请使用 Guava 的 Lists.partition(List, int) 方法:
请注意,与许多事情一样,这对于
List
不是非常有效RandomAccess
(例如LinkedList
)。