List的拆分的几种方式

这篇具有很好参考价值的文章主要介绍了List的拆分的几种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开发中我们可能会遇到一个大的集合,然后我们需要对集合进行拆分,然后再对拆分的集合进行相关的操作。当然我们可以自己写一个拆分的方法,我自己写过用了不少代码,但是感觉还不是很好,最近看了不少工具才发现很多的大神们其实已经写了工具类,我们站在大神肩膀上开发就行了。

将List拆分很多的小的List的过程,我们称之为分片,当然也可以称为List的分隔,选一个你喜欢的名字就行,你喜欢的就是最好的(这怎么像渣男语录啊,一定要擦亮眼睛,不要让别人画大饼)。

在Java中分片的常见实现方法有以下几种:

1:使用Google的Guava框架实现切片。

2:使用Apache的commons框架实现切片。

3:使用Hutool工具类实现切片。

接下来我们就分别看一下,你的项目中如果已经引用了相应的jar包你就可以使用相应的方法实现List切片。

1.Google Guava

先在项目的 pom.xml 中添加框架支持,增加以下配置:

<dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.0.1-jre</version>
        </dependency>

有了 Guava 框架之后,只需要使用 Lists.partition 方法即可实现分片,如下代码所示:

List<String> tempList = Arrays.asList("水星","金星","地球","火星",
"冥王星","土星","天王星","海王星","冥王星","木星");
// size 是把集合拆分的大小,size 为表示拆分成拆分的集合大小为3,
// 后面不足3的有多少算多少
List<List<String>> partition = Lists.partition(tempList, 3);
System.out.println(partition);

结果如下:(拆成如下结果,开发的时候再遍历集合进行应用)

[[水星, 金星, 地球], 
[火星, 冥王星, 土星], 
[天王星, 海王星, 冥王星], 
[木星]]

2.apache commons

先在项目的 pom.xml 中添加框架支持,增加以下配置:

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.4</version>
        </dependency>

有了  commons 框架之后,只需要使用 ListUtils.partition 方法即可实现分片,如下代码所示:

List<String> tempList = Arrays.asList("水星","金星","地球","火星","冥王星","土星","天王星","海王星","冥王星","木星");
List<List<String>> partition = ListUtils.partition(tempList, 6);

System.out.println(partition);

输出结果如下:

[[水星, 金星, 地球, 火星, 冥王星, 土星],
 [天王星, 海王星, 冥王星, 木星]]

3.Hutool

先在项目的 pom.xml 中添加框架支持,增加以下配置:

<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.14</version>
        </dependency>

有了 Hutool 框架之后,只需要使用 ListUtil.partition 方法即可实现分片,如下代码所示:

List<String> tempList = Arrays.asList("水星","金星","地球","火星","冥王星","土星","天王星","海王星","冥王星","木星");
 List<List<String>> partition = ListUtil.partition(tempList, 5);

 System.out.println(partition);

输出结果如下:

[[水星, 金星, 地球, 火星, 冥王星], 
[土星, 天王星, 海王星, 冥王星, 木星]]

有的小伙伴可能会说,为什么要给出三种的,给出一种切片方法不就可以了,因为列举每一种方法都需要引入对应的jar包,所以自己按需引用,如果你的项目中已经引用了对应的jar就参考其中的一个例子写就行了。

又有小伙伴要问这样切分有什么用途呢?这个用途还是很广泛的,比如你做批量新增数据的时候,如果你有几万条数据要新增到数据库,最好对这几万条数据拆分一下再插入数据库,例如ORACLE你如果一次批量新增超过1000条就有可能会新增失败。Mysql批量新增一次过多也可能回报如下

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (16888937 > 1048576). 

You can change this value on the server by setting the max_allowed_packet' variable.

这种错误,当然这种错误可以通过设置如下参数解决:

SET GLOBAL max_allowed_packet = 1024*1024*64

但是你不能把这个参数设置无限大,设置无限大也是不好的。所以批量新增大量数据最好拆分一下。

【PS其实我上面引用的那些jar包,每个包里面都有很多工具类供开发者使用,并且都是经过大量实践的,性能也是很好的小伙伴们可以引入对应的jar看看各个工具类的源码真的是太好用了】,欢迎关注,感谢关注。文章来源地址https://www.toymoban.com/news/detail-465611.html

到了这里,关于List的拆分的几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java开发或调用WebService的几种方式

    1.服务端开发与发布 编写接口 编写接口的实现类 发布服务 访问已发布的WebService服务 打开浏览器输入http://127.0.0.1:8888/JaxWSTest?wsdl访问,如下面内容 截图内容1 浏览器中输入wsdl文档中的 http://127.0.0.1:8888/JaxWSTest?xsd=1可查看绑定的参数等信息看如下图: 截图内容2 jdk自带生成W

    2024年01月17日
    浏览(65)
  • JAVA开发(通过Apollo注入配置信息的几种方式)

    在springCloud中有一个重要的组件就是配置中心,config:server,用于配置springboot中需要注入的各种配置项。但是现在发现越来越多的企业使用Apollo进行集成。博主在开发中也是使用Apollo进行配置。本文总结Apollo的的使用,集成到springboot,和注入方式等。   Apollo是携程框架部门研

    2024年02月09日
    浏览(65)
  • 电商数据抓取的几种方式分享-开发平台接口、网络爬虫数据、数据挖掘

    随着网络的普及,人们网络购物已然成为日常生活方式之一。电商们也是在不断壮大成长,各电商平台的数据量是越来越大。如何将电商大数据转化为能为我们所用的,给我们带来利益增长的工具呢?抓取电商数据是第一步,能够通过快速便捷低成本的方式获取电商数据,这

    2024年02月05日
    浏览(47)
  • Vue is not defined错误的几种可能

     当出现vue is not defined  at ,有以下几种情况发生: 检查方法: 上方是vue3,下方是vue2,因为我下载的是vue2模式,所以启用vue2模式就可以了 点击vue2的详情,开启访问文件地址功能,查看是否允许访问  因为我之前一直引用的是相对地址,一直显示Vue is not defined的问题,改成

    2024年02月11日
    浏览(37)
  • List去重的几种方法

    现在设有Integer类型的ArrayList,list=[0,1,1,3,3,4,5] 1.使用contains 2.使用TreeSet/HashSet/LinkedHashSet 3.Stream流 4.使用迭代器Iterator 5.list中的remove方法

    2024年02月05日
    浏览(57)
  • List转换String,String转List的几种方法

    将一个Java集合List转换为String方法比较多,可以使用String.join()、StringBuilder、Stream流等方法。下面举几个常用的示例: 1.使用String.join()方法 2.使用循环和字符串拼接的方式将列表转换为字符串 3.使用Java 8的Stream API来将列表转换为字符串 4.使用Apache Commons Lang库的 StringUtils 类

    2024年02月11日
    浏览(43)
  • 关于word加载mathtype我遇到的几种问题

    我用的是电脑自带的家庭版的2016版office,第一次用的一个mathtype的安装包忘记是哪个版本了,但是应该是7或者低于7的版本。遇到的问题是显示下面的窗口,这个问题我试了一晚上加一上午都没解决,正当我认命打算重装系统时我看到了一篇文章:(6条消息) word打开提示无法加

    2024年02月06日
    浏览(49)
  • JavaWeb中遇到404问题的几种解决方案

    检查XML路径配置 在Servlet中加入@WebServlet 检查class文件是否生成 博主最近也是被404问题所困扰,用过很多方法,现在来分享一点我自己的经验技巧,404问题主要是由于访问路径和XML中的配置存在了问题,现在提供几点解决思路(如果不准确,望见谅) 提示:以下是本篇文章正

    2024年02月08日
    浏览(60)
  • IDEA遇到 git pull 冲突的几种解决方法

    主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉 关于commit和pull的先后顺序,commit–pull–push 和 pull–commit–push的顺序,两种情况都遇到过代码冲突。解决方法如下: // 场景 同事 有新提交 我 没有pull - 修改了文件 - p

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包