当我们需要对一个特别大的list进行处理时,通常需要进行分批处理,可以自己实现按照多少条进行分批,但是自己实现比较复杂,而且不同的人写还容易出错。
这里可以利用guava里面的工具类Lists.partion()来进行分批。
源码如下:
public static <T> List<List<T>> partition(List<T> list, int size) {
checkNotNull(list);
checkArgument(size > 0);
return (list instanceof RandomAccess)
? new RandomAccessPartition<>(list, size)
: new Partition<>(list, size);
}
测试一下:(每批两条)
List<Integer> list = Lists.newArrayList(1,2,3,4,5,6,7);
List<List<Integer>> partition = Lists.partition(list, 2);
for (List<Integer> integers : partition) {
System.out.println(integers);
}
运行结果
[1, 2]
[3, 4]
[5, 6]
[7]
换一下(每批四条)
List<Integer> list = Lists.newArrayList(1,2,3,4,5,6,7);
List<List<Integer>> partition = Lists.partition(list, 4);
for (List<Integer> integers : partition) {
System.out.println(integers);
}
运行结果
List<Integer> list = Lists.newArrayList(1,2,3,4,5,6,7);
List<List<Integer>> partition = Lists.partition(list, 4);
for (List<Integer> integers : partition) {
System.out.println(integers);
}