当我们需要对一个特别大的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);}