如何在给定每个组的最大对象数(Java)的情况下,在组上平均分割一定数量的对象

如何在给定每个组的最大对象数(Java)的情况下,在组上平均分割一定数量的对象,java,Java,我正在做一个学校的项目,其中我有一个带有对象的ArrayList。我必须在组(其他ArrayList)上平均分割这些对象,每个组的对象数量最大(maximumGroupSize) 如何分割这些对象,使它们均匀分布在组上,并在给定最大GroupSize的情况下使组的数量最少 我尝试了以下代码: public List<List<Object>> createGroups(List<Object> objects, int maximumGroupSize) {

我正在做一个学校的项目,其中我有一个带有对象的ArrayList。我必须在组(其他ArrayList)上平均分割这些对象,每个组的对象数量最大(maximumGroupSize)

如何分割这些对象,使它们均匀分布在组上,并在给定最大GroupSize的情况下使组的数量最少

我尝试了以下代码:

public List<List<Object>> createGroups(List<Object> objects, int maximumGroupSize) {
    float totalObjectCount = objects.size();
    float maxGroupSize = maximumGroupSize;
    List<List<Object>> groups = new ArrayList<>();
    for (int i = 0; i < java.lang.Math.ceil(totalObjectCount / maximumGroupSize); i++){
        List<Object> group = new ArrayList<>();
        for (int j = (i*maximumGroupSize); j < maximumGroupSize*(i+1);j++){
            if (j<objects.size()) {
                group.add(objects.get(j));
            }
        }
        groups.add(group);
    }
    return groups;
}
公共列表createGroups(列表对象,int-maximumGroupSize){
float totalObjectCount=objects.size();
float maxGroupSize=maximumGroupSize;
列表组=新的ArrayList();
for(int i=0;i如果(j如果您得到了拆分组允许的最大组大小,那么您可以使用该值来计算最小组数

这可以通过使用原始ArrayList的长度来完成。将原始列表中的对象数除以最大组大小,然后取此数字的上限以获得最小组数

例如,如果给你一个包含11个对象的ArrayList,你的最大组大小是2,那么你的最小组数是6


现在,您可以根据需要创建所需数量的ArrayList。获得这些ArrayList后,将原始列表拆分为这些列表应该非常容易。

既然您现在提供了您尝试过的代码,下面是我之前没有发布的解决方案,因为您没有尝试:-

public static void main(String[] args) {
    List<Integer> list = IntStream.range(10, 20)
            .boxed()
            .collect(Collectors.toList());
    List<Integer> groups[] = createGroups(list, 4);
    for (List<Integer> group : groups) {
        System.out.println(group);
    }
}

public static List<Integer>[] createGroups(List<Integer> list, int maximumPerGroup) {
    int numberOfGroups = list.size() / maximumPerGroup;
    if (list.size() % maximumPerGroup > 0) numberOfGroups++;
    List<Integer> groups[] = new ArrayList[numberOfGroups];
    for (int i = 0; i < list.size(); i++) {
        if (groups[i % numberOfGroups] == null) groups[i % list.size()] = new ArrayList<>();
        groups[i % numberOfGroups].add(list.get(i));
    }
    return groups;
}

你能发布你迄今为止创建的代码来尝试解决这个问题吗?我已经添加了我在上面尝试过的代码。在途中解决了一个问题,但仍然没有完成。谢谢你的帮助,我用它来创建问题中添加的代码。这对我来说很有效!谢谢你的解决方案。这正是我所需要的。
[10, 13, 16, 19]
[11, 14, 17]
[12, 15, 18]