记录一点关于list每次以指定的间距分割的代码,仅做一个记录

来源:互联网 发布:surge for mac 教程 编辑:程序博客网 时间:2024/05/17 18:47
       这是个对list按指定的尺寸分割的代码,为何要记录这个问题,在我的mysql做批量插入时出现了
  Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1875824 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
      这个错误,经我们分析,是批量插入一次传递的数据太多,一个方式是修改max_allowed_package 这个参数,那个异常已经说明了解决方式(You can change this value on the server by setting the max_allowed_packet' variable),第二就是对批量插入的数据list进行切割这个效果就好了,因为修改参数还是存在着不确定性,所以还是用切割吧。写了一段小例子测试一下算法,记录一下,其实没有什么指导意义,看这篇文章的可别说我low,附上算法和测试代码:
        List<Integer> testlist=new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6));


        int startindex=10; //这个控制切割的大小,如果太大修改这个参数
for(int i=startindex;;){
            if(testlist.size()<i){
                int start=i-startindex<0?0:i-startindex;
if( testlist.subList(start, testlist.size()).size()>0){
 for (Integer integer : testlist.subList(start, testlist.size())) {  //切割后得到的list为 testlist.subList(start, testlist.size())
        System.out.print("qiege2="+integer);
        }
}
               System.out.println();
                break;
            }else{
            for (Integer integer : testlist.subList(i-startindex,i)) {   //切割后dedao的list为 testlist.subList(i-startindex,i)
          System.out.print("qiege2="+integer);
          }
            System.out.println();
            }
            i=i+startindex;
        }
      
       很简单,自己记录一下,欢迎提出好的建议。
0 0
原创粉丝点击