您的位置:首页 > 编程语言

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

2016-12-30 10:49 344 查看
       这是个对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;

        }

      
       很简单,自己记录一下,欢迎提出好的建议。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: