数组列表的分区,以便我可以在其中包含固定对象?
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 工作流很有用。
谢谢
我想将 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 工作流很有用。
谢谢