当前位置:   article > 正文

Java 中 List 分片的 5 种方法_java list分割

java list分割

原因是 MySQL 只能执行一定长度的 SQL 语句,但当插入的数据量较多时,会生成一条很长的 SQL,这样程序在执行时就会报错。

要解决这个问题,有两种方法:第一,设置 MySQL 可以执行 SQL 的最大长度;第二,将一个大 List 分成 N 个小 List 进行。由于无法准确的界定程序中最大的 SQL 长度,所以最优的解决方案还是第二种,于是就有了今天的这篇文章。

简介

将一个 List 分成多个小 List 的过程,我们称之为分片,当然也可以叫做“List 分隔”,选一个你喜欢的、好理解的叫法就行。

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

  1. 使用 Google 的 Guava 框架实现分片;

  2. 使用 Apache 的 commons 框架实现分片;

  3. 使用国产神级框架 Hutool 实现分片;

  4. 使用 JDK 8 中提供 Stream 实现分片;

  5. 自定义分片功能。

接下来我们分别来看。

1.Google Guava


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

com.google.guava

guava

31.0.1-jre

复制代码

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

import com.google.common.collect.Lists;

import java.util.Arrays;

import java.util.List;

/**

  • Guava 分片

*/

public class PartitionByGuavaExample {

// 原集合

private static final List OLD_LIST = Arrays.asList(

“唐僧,悟空,八戒,沙僧,曹操,刘备,孙权”.split(“,”));

public static void main(String[] args) {

// 集合分片

List<List> newList = Lists.partition(OLD_LIST, 3);

// 打印分片集合

newList.forEach(i -> {

System.out.println(“集合长度:” + i.size());

});

}

}

复制代码

以上代码的执行结果如下图所示:

2.apache commons


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

org.apache.commons

commons-collections4

4.4

复制代码

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

import org.apache.commons.collections4.ListUtils;

import java.util.Arrays;

import java.util.List;

/**

  • commons.collections4 集合分片

*/

public class PartitionExample {

// 原集合

private static final List OLD_LIST = Arrays.asList(

“唐僧,悟空,八戒,沙僧,曹操,刘备,孙权”.split(“,”));

public static void main(String[] args) {

// 集合分片

List<List> newList = ListUtils.partition(OLD_LIST, 3);

newList.forEach(i -> {

System.out.println(“集合长度:” + i.size());

});

}

}

复制代码

以上代码的执行结果如下图所示:

3.Hutool


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

cn.hutool

hutool-all

5.7.14

复制代码

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

import cn.hutool.core.collection.ListUtil;

import java.util.Arrays;

import java.util.List;

public class PartitionByHutoolExample {

// 原集合

private static final List OLD_LIST = Arrays.asList(

“唐僧,悟空,八戒,沙僧,曹操,刘备,孙权”.split(“,”));

public static void main(String[] args) {

// 分片处理

List<List> newList = ListUtil.partition(OLD_LIST, 3);

newList.forEach(i -> {

System.out.println(“集合长度:” + i.size());

});

}

}

复制代码

以上代码的执行结果如下图所示:

4.JDK


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

image

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

[外链图片转存中…(img-e8wR5ZXA-1713391940541)]

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/971075
推荐阅读
相关标签
  

闽ICP备14008679号