我有一个 ArrayList
,我想将其分成 n
大小的较小 List
对象,并对每个对象执行操作。
我目前执行此操作的方法是使用 Java 中的 ArrayList
对象实现的。任何伪代码都可以。
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 万个相当大的列表时,这种方式会花费太多时间,因此我正在尝试找出更有效的方法。
最佳答案
你会想做一些利用 List.subList(int, int) 的事情。 View 而不是复制每个子列表。要真正轻松地做到这一点,请使用 Guava的Lists.partition(List, int)方法:
List<Foo> foos = ...
for (List<Foo> partition : Lists.partition(foos, n)) {
// do something with partition
}
请注意,与许多事情一样,对于不是 RandomAccess
的 List
(例如 LinkedList
)。
关于java - 将列表划分为 n 大小列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5824825/