当前位置: 首页 > 网络应用技术

Java中的五种列表碎片方法!

时间:2023-03-05 16:50:58 网络应用技术

  几天前,当我意识到MyBatis批处理插入时,我遇到了一个问题。当批量插入的数据量很大时,这将导致程序执行错误,如下图所示:

  原因是MySQL只能执行一定长度的SQL语句,但是当插入的数据量很大时,将生成一个长SQL,以便该程序在执行时报告错误。

  要解决此问题,有两种方法:首先,设置MySQL可以执行SQL的最大长度;其次,将大列表分为n个小列表。由于程序中最大的SQL长度无法准确定义,因此最佳解决方案仍然是第二个,因此今天有今天的文章。

  将一个列表划分为多个小列表的过程,我们称之为一块,当然也可以称为“列表分离”。选择一个您喜欢的名字,并且可以很好地理解。

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

  接下来让我们看一下。

  首先将帧支持添加到项目的pom.xml,并添加以下配置:

  使用Guava框架,您只需要使用列表。分机方法实现碎片,如以下代码所示:

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

  首先将帧支持添加到项目的pom.xml,并添加以下配置:

  在拥有Commons框架之后,您只需要使用Listutils.Artitation方法来实现碎片。如以下代码所示:

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

  首先将帧支持添加到项目的pom.xml,并添加以下配置:

  使用Hutool框架,您只需要使用Listutil.Artitation方法即可实现碎片。显示以下代码:

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

  流不需要通过JDK 8中的流中添加任何框架即可实现碎片。特定的实施代码如下:

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

  无需为此方法添加任何框架,但缺点是它只能实现简单的碎片(将列表分为两个),并且必须有明确的碎片条件。例如,设置的碎片条件设置这种情况是数组是否大于3。如果它大于3,则将其分类为组,否则将分为另一组。

  如果您不想引入第三方框架,并且无法满足流的需求,则可以考虑编写代码以实现碎片函数。由于此方法不常用,我们只给出一个关键方法这里。

  自定义碎片函数的关键实现方法是JDK随附的Sublist方法,如下图所示:

  使用的示例如下:

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

  本文介绍了5个列表的实现方法。实施它的最方便方法是引入第三方框架,例如Google的Guava,Apache's Commons或国内开源Hutool。在Courseany类型中,只需直接使用它。如果这是一个简单的作品,您可以考虑使用JDK的流或List的Sublist方法来实现碎片功能。

  请注意公共帐户“ Java中国社区”,以查看更多Java摘要系列文章。