首页 > 基础资料 博客日记

Java 中 List 分片的 5 种方法

2024-09-06 15:00:06基础资料围观104

文章Java 中 List 分片的 5 种方法分享给大家,欢迎收藏Java资料网,专注分享技术知识

原因是 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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

[外链图片转存中…(img-PpQOLYm2-1715333095976)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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


文章来源:https://blog.csdn.net/m0_75232472/article/details/138674473
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云