如果有一个list<string> 里面可能有1000份或者更多数据,如果需要进行入库等操作,需要拆分成指定大小每份进行处理,这种需求很常见,那么应该怎么做呢?
首先我们需要将 List<String> 转为多份后 进行逐个处理, 处理批量事务注意事务哦
那么怎么将list转为多份呢? 下面介绍2中方式
1:自己写一个方法处理
import com.google.common.collect.Lists;
//自定义分片方法
private static List<List<String>> subList(List<String> list, int batchSize){
List<List<String>> subList = Lists.newArrayList();
for (int i = 0; i < list.size(); i += batchSize) {
int end = i + batchSize;
if (end > list.size()) {
end = list.size();
}
subList.add(list.subList(i, end));
}
return subList;
}
//测试方法
public static void main(String[] args) {
//准备一个list 11个值
List<String> list = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7","8", "9", "10", "11");
//每3个分片调用上面的方法
List<List<String>> lists = subList(list, 3);
System.out.println(lists);
}
//运行后的结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
测试:
2:使用google包
import com.google.common.collect.Lists;
public static void main(String[] args) {
//准备一个list 11个值
List<String> list = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7","8", "9", "10", "11");
//每3个分片调用Lists.partition的方法
List<List<String>> partition = Lists.partition(list, 3);
System.out.println(partition);
}
//运行结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
可以看到,两种方法都可以实现将一个list 分割成多个list 这里推荐使用第二种,方便简单, 如果有自定义的需求再将第一个方法改造
关于list的分割的分享就到这里了 感谢~
标签:11,List,list,subList,Lists,几种,分片 From: https://www.cnblogs.com/loveCrane/p/18286260