java - 将列表划分为 n 大小列表的有效方法

标签 java arraylist partitioning

我有一个 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 而不是复制每个子列表。要真正轻松地做到这一点,请使用 GuavaLists.partition(List, int)方法:

List<Foo> foos = ...
for (List<Foo> partition : Lists.partition(foos, n)) {
  // do something with partition
}

请注意,与许多事情一样,对于不是 RandomAccessList(例如 LinkedList )。

关于java - 将列表划分为 n 大小列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5824825/

相关文章:

java - JPA 标准 : build specification matching any id in collection

java - 尝试在空对象引用上调用虚拟方法 'java.lang.Long com.google.firebase.firestore.DocumentSnapshot.getLong(java.lang.String)'

Java 在 servlet 上下文中存储与数据库查找

java - C++ 等效于 Arraylist.get(index)

java - 在 Pivot 上对数组进行分区

python - 是否有任何巧妙有效的算法来对字符串的分区空间执行计算?

java - 在数据库中存储数组

c# - 如何使用 Java 或 C# 填充浏览器中的字段

java - 如何将 List<List<String>> 转换为 String[][]?

mysql - 什么时候不对表进行分区(MySQL)?