数组列表的分区,以便我可以在其中包含固定对象?

Partition of an Array List such that i can have fixed object in it?

我想将 N 个对象的列表转换为数组列表的块,应该以这样的方式完成,它不应该有重复并且块应该有一定的大小。

示例 - ArrayList 大小 - 100 块大小 20 Arraylist 应该有 5 个块。

简单。遍历列表,每个“大小”元素创建一个新块:

public static <T> List<List<T>> split(Collection<T> data, int size)
{
    List<List<T>> lists=new ArrayList<>((data.size()+size-1)/size);
    List<T> list=new ArrayList<>(size);
    for(T t:data)
    {
        list.add(t);
        if(list.size()==size)
        {
            lists.add(list);
            list=new ArrayList<>(size);
        }
    }
    if(list.size()>0) lists.add(list);
    return lists;
}

您可以使用 Guava's Lists.partition(List list, int size):

List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
List<List<Integer>> sublists = Lists.partition(integers, 3);
System.out.println(sublists);

输出:

[
  [1, 2, 3],
  [4, 5, 6],
  [7]
]

有很多方法可以解决这个问题,我通过使用工作流解决了这个问题,因为我想以一种我可以对其进行更多控制的方式执行列表分区,并且遵循 camunda 工作流很有用。

谢谢