找回密码
 会员注册
查看: 25|回复: 0

Java中List分片的5种方法

[复制链接]

7

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2024-9-3 17:49:04 | 显示全部楼层 |阅读模式
原因是MySQL只能执行一定长度的SQL语句,但当插入的数据量较多时,会生成一条很长的SQL,这样程序在执行时就会报错。要解决这个问题,有两种方法:第一,设置MySQL可以执行SQL的最大长度;第二,将一个大List分成N个小List进行。由于无法准确的界定程序中最大的SQL长度,所以最优的解决方案还是第二种,于是就有了今天的这篇文章。​简介–将一个List分成多个小List的过程,我们称之为分片,当然也可以叫做“List分隔”,选一个你喜欢的、好理解的叫法就行。​在Java中,分片的常见实现方法有以下几种:使用Google的Guava框架实现分片;使用Apache的commons框架实现分片;使用国产神级框架Hutool实现分片;使用JDK8中提供Stream实现分片;自定义分片功能。接下来我们分别来看。1.GoogleGuava先在项目的pom.xml中添加框架支持,增加以下配置:com.google.guavaguava31.0.1-jre复制代码有了Guava框架之后,只需要使用Lists.partition方法即可实现分片,如下代码所示:importcom.google.common.collect.Lists;importjava.util.Arrays;importjava.util.List;/**Guava分片*/publicclassPartitionByGuavaExample{//原集合privatestaticfinalListOLD_LIST=Arrays.asList(“唐僧,悟空,八戒,沙僧,曹操,刘备,孙权”.split(“,”));publicstaticvoidmain(String[]args){//集合分片ListnewList=Lists.partition(OLD_LIST,3);//打印分片集合newList.forEach(i->{System.out.println(“集合长度:”+i.size());});}}复制代码以上代码的执行结果如下图所示:2.apachecommons先在项目的pom.xml中添加框架支持,增加以下配置:org.apache.commonscommons-collections44.4复制代码有了commons框架之后,只需要使用ListUtils.partition方法即可实现分片,如下代码所示:importorg.apache.commons.collections4.ListUtils;importjava.util.Arrays;importjava.util.List;/**commons.collections4集合分片*/publicclassPartitionExample{//原集合privatestaticfinalListOLD_LIST=Arrays.asList(“唐僧,悟空,八戒,沙僧,曹操,刘备,孙权”.split(“,”));publicstaticvoidmain(String[]args){//集合分片ListnewList=ListUtils.partition(OLD_LIST,3);newList.forEach(i->{System.out.println(“集合长度:”+i.size());});}}复制代码以上代码的执行结果如下图所示:3.Hutool先在项目的pom.xml中添加框架支持,增加以下配置:cn.hutoolhutool-all5.7.14复制代码有了Hutool框架之后,只需要使用ListUtil.partition方法即可实现分片,如下代码所示:importcn.hutool.core.collection.ListUtil;importjava.util.Arrays;importjava.util.List;publicclassPartitionByHutoolExample{//原集合privatestaticfinalListOLD_LIST=Arrays.asList(“唐僧,悟空,八戒,沙僧,曹操,刘备,孙权”.split(“,”));publicstaticvoidmain(String[]args){//分片处理ListnewList=ListUtil.partition(OLD_LIST,3);newList.forEach(i->{System.out.println(“集合长度:”+i.size());});}}复制代码以上代码的执行结果如下图所示:4.JDK最后自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!FnipO-1715333095976)][外链图片转存中…(img-PpQOLYm2-1715333095976)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-28 06:57 , Processed in 0.447602 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表