mybatis selectlist in后面数据很多造成数据io异常处理
将传入的list数组一个很大的list分割成多个小的list处理
或者用lamda表达式分组处理
public class ListTest {
public static void main(String[] args) {
/*ArrayList<String> newArrayList = Lists.newArrayList("aaa","bb","cc");
newArrayList.remove("dd");
for (String string : newArrayList) {
System.out.println(string);
}*/
// listSplit2();
// listSplit();
ArrayList<Integer> newArrayList = Lists.newArrayList();
for(int i = 100; i>0;i--) {
newArrayList.add(i);
}
//利用java8 lamda表达式分割
final int batch = 10;
AtomicInteger counter = new AtomicInteger();
Map<Integer, List<Integer>> collect = newArrayList.stream()
.collect(Collectors.groupingBy(x -> counter.getAndIncrement() / batch));
List<Integer> test =Lists.newArrayList();
collect.forEach((k, v) -> {
System.out.println(k+"," + v);
test.addAll(v);
});
for (Integer integer : test) {
System.out.print(integer+",");
}
// collect.forEach((group, items) -> {});
}
private static void listSplit2() {
ArrayList<Integer> newArrayList = Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19);
//利用java google guava包 Lists.partition 分割
List<List<Integer>> subSets = Lists.partition(newArrayList, 3);
List<Integer> test = Lists.newArrayList();
for (List<Integer> list : subSets) {
System.out.println(list.toString());
test.addAll(list);
}
System.out.println(test.toString());
}
private static void listSplit() {
ArrayList<Integer> newArrayList = Lists.newArrayList();
for(int i = 0; i<400;i++) {
newArrayList.add(i);
}
//利用java google guava包 Lists.partition 分割
List<List<Integer>> subSets = Lists.partition(newArrayList, 200);
List<Integer> test = Lists.newArrayList();
for (List<Integer> list : subSets) {
// System.out.println(list.toString());
test.addAll(list);
}
System.out.println(test.toString());
}
}