Java中List分片方式詳細解析
前言
在日常開發(fā)中,經常會遇到持久層批量插入的需求,當批量插入的數據量比較大時,會導致執(zhí)行報錯,究其原因,是MySQL只能執(zhí)行一定長度的SQL語句,若插入的數據量很多時,執(zhí)行的插入語句就會很長,最終導致執(zhí)行報錯。
解決方式通常如下:
設置MySQL可以執(zhí)行的SQL語句的最大長度;將List進行分片;
下面對List進行分片進行簡單的分析。
將一個List分成多個小List的過程,即為分片,其實現方式有如下:
- Google的Guava組件;
- Apache的commons組件;
- 國產的Hutool組件;
- JDK8的Stream流;
- 自定義;
1、Google的Guava組件方式
public static void main(String[] args) { List<String> list = Arrays.asList("曹操,孫權,劉備,袁紹,張繡,馬騰,張魯".split(",")); List<List<String>> partition = Lists.partition(list, 3); partition.forEach(i -> { System.out.println("子集合:" + i); }); }
執(zhí)行結果如下:
2、Apache的commons組件方式
public static void main(String[] args) { List<String> list = Arrays.asList("曹操,孫權,劉備,袁紹,張繡,馬騰,張魯".split(",")); List<List<String>> partition = ListUtils.partition(list, 3); partition.forEach(i -> { System.out.println("子集合:" + i); }); }
執(zhí)行結果同上。
3、國產的Hutool組件方式
public static void main(String[] args) { List<String> list = Arrays.asList("曹操,孫權,劉備,袁紹,張繡,馬騰,張魯".split(",")); List<List<String>> partition = ListUtil.partition(list,3); partition.forEach(i -> { System.out.println("子集合:" + i); }); }
執(zhí)行結果同上。
4、JDK8的Stream流方式
public static void main(String[] args) { List<String> list = Arrays.asList("曹操,孫權,劉備,袁紹,張繡,馬騰,張魯".split(",")); Map<Boolean, List<String>> collect = list.stream().collect(Collectors.partitioningBy(str -> { return str.equals("曹操"); })); System.out.println(collect); }
執(zhí)行結果如下:
5、自定義方式
public static void main(String[] args) { List<String> list = Arrays.asList("曹操,孫權,劉備,袁紹,張繡,馬騰,張魯".split(",")); List<String> subList = list.subList(0, 3); subList.forEach(i -> System.out.println(i)); }
執(zhí)行結果如下:
上面即為常見的List分片方式,可以根據具體需求和場景進行選擇使用。
到此這篇關于Java中List分片方式詳細解析的文章就介紹到這了,更多相關Java List分片內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot多環(huán)境進行動態(tài)配置的方法
這篇文章主要介紹了springboot多環(huán)境下如何進行動態(tài)配置,本文主要分享了如何在springboot的項目中使用多環(huán)境配置,重點是”spring.profiles.active“屬性,需要的朋友可以參考下2022-06-06Mybatis-plus:${ew.sqlselect}用法說明
這篇文章主要介紹了Mybatis-plus:${ew.sqlselect}用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06