java - java中集合的分组

标签 java

我有一个整数集合(这可以是动态数据源)

ArrayList<Int> data = [1,2,3,4,5,6,7]

我能做什么

我可以使用 here 的答案生成 Equal 数据集,例如 [1,2,3][4,5,6] [7]

<小时/>

问题:我如何限制组的数量(例如最大 2),以便结果输出为 [1,2,3,4][5,6,7][1,2,3][4,5,6,7]

最佳答案

您可以迭代列表,将项目分为子组,直到达到限制,然后将其余元素添加到最后一个组,而不是使用第三方库

private static List<List<Integer>> partition(List<Integer> list, int groupSize, int limit) {
    List<List<Integer>> result = new ArrayList<>();

    for (int i = 0; i < list.size(); i++) {
        int groupIndex = i / groupSize;
        if(groupIndex > limit - 1) {
            groupIndex = limit - 1;
        }

        if(groupIndex >= result.size()) {
            result.add(new ArrayList<>());
        }
        result.get(groupIndex).add(list.get(i));
    }

    return result;
}

关于java - java中集合的分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60589491/

相关文章:

java - 如何使用 Selenium WebDriver 获取所有链接并一一单击这些链接

java - 迭代器接口(interface) SCJP

Java 多态性和列表

java - 如何通过 Java 代码从 XML 文件一次解析一个节点?

java - Hibernate默认时间戳是从数据库还是虚拟机获取的?

java - Java 中 ConcurrentHashMap 的多线程

Java 如果我有不同的构造函数但有相同的接口(interface),我应该使用什么设计模式来实例化对象?

java - 如何保留N个最高值?

java - 如何将我的应用程序添加到 "Open With"对话框?

java - Hibernate Schema generation 是否可以在没有数据库连接的情况下生成DDL