Java中List分片方式詳細解析
前言
在日常開發(fā)中,經(jīng)常會遇到持久層批量插入的需求,當批量插入的數(shù)據(jù)量比較大時,會導致執(zhí)行報錯,究其原因,是MySQL只能執(zhí)行一定長度的SQL語句,若插入的數(shù)據(jù)量很多時,執(zhí)行的插入語句就會很長,最終導致執(zhí)行報錯。
解決方式通常如下:
設置MySQL可以執(zhí)行的SQL語句的最大長度;將List進行分片;
下面對List進行分片進行簡單的分析。
將一個List分成多個小List的過程,即為分片,其實現(xiàn)方式有如下:
- Google的Guava組件;
- Apache的commons組件;
- 國產(chǎn)的Hutool組件;
- JDK8的Stream流;
- 自定義;
1、Google的Guava組件方式
public static void main(String[] args) {
List<String> list = Arrays.asList("曹操,孫權(quán),劉備,袁紹,張繡,馬騰,張魯".split(","));
List<List<String>> partition = Lists.partition(list, 3);
partition.forEach(i -> {
System.out.println("子集合:" + i);
});
}執(zhí)行結(jié)果如下:

2、Apache的commons組件方式
public static void main(String[] args) {
List<String> list = Arrays.asList("曹操,孫權(quán),劉備,袁紹,張繡,馬騰,張魯".split(","));
List<List<String>> partition = ListUtils.partition(list, 3);
partition.forEach(i -> {
System.out.println("子集合:" + i);
});
}執(zhí)行結(jié)果同上。
3、國產(chǎn)的Hutool組件方式
public static void main(String[] args) {
List<String> list = Arrays.asList("曹操,孫權(quán),劉備,袁紹,張繡,馬騰,張魯".split(","));
List<List<String>> partition = ListUtil.partition(list,3);
partition.forEach(i -> {
System.out.println("子集合:" + i);
});
}執(zhí)行結(jié)果同上。
4、JDK8的Stream流方式
public static void main(String[] args) {
List<String> list = Arrays.asList("曹操,孫權(quán),劉備,袁紹,張繡,馬騰,張魯".split(","));
Map<Boolean, List<String>> collect = list.stream().collect(Collectors.partitioningBy(str -> {
return str.equals("曹操");
}));
System.out.println(collect);
}執(zhí)行結(jié)果如下:

5、自定義方式
public static void main(String[] args) {
List<String> list = Arrays.asList("曹操,孫權(quán),劉備,袁紹,張繡,馬騰,張魯".split(","));
List<String> subList = list.subList(0, 3);
subList.forEach(i -> System.out.println(i));
}執(zhí)行結(jié)果如下:

上面即為常見的List分片方式,可以根據(jù)具體需求和場景進行選擇使用。
到此這篇關于Java中List分片方式詳細解析的文章就介紹到這了,更多相關Java List分片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
hibernate-validator后端表單數(shù)據(jù)校驗的使用示例詳解
這篇文章主要介紹了hibernate-validator后端表單數(shù)據(jù)校驗的使用,hibernate-validator提供的校驗方式為在類的屬性上加入相應的注解來達到校驗的目的,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-08-08
詳細總結(jié)Java創(chuàng)建文件夾的方法及優(yōu)缺點
很多小伙伴都不知道如何用Java創(chuàng)建文件夾,今天給大家整理了這篇文章,文中有非常詳細的方法介紹及方法的優(yōu)缺點,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實例解析
這篇文章主要介紹了Java向上轉(zhuǎn)型和向下轉(zhuǎn)型實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02
Spring中Transactional注解使用的心得(推薦)
這篇文章主要介紹了Spring中Transactional注解使用的心得,事務是用來控制數(shù)據(jù)的ACID特性的,用于保證數(shù)據(jù)的正確性和完整性,需要的朋友可以參考下2022-10-10

