Java把list分成多個list的方法示例
背景
開發(fā)中,有時候我么需要將一個list集合分割成多個小的list集合來處理,例如:將拆分的小集合利用多線程來異步處理,以此來提高效率。下面將對示例集合進行拆分:
第一種:等量拆分
private List<List<String>> partition(List<String> originalList, int size) { List<List<String>> partition = new ArrayList<>(); int totalSize = originalList.size(); // 計算每個集合的大小,向上取整 int groupSize = (totalSize / size) + 1; for (int i = 0; i < size; i++) { int start = i * groupSize; // 防止數(shù)組越界 int end = Math.min(start + groupSize, totalSize); partition.add(new ArrayList<>(originalList.subList(start, end))); } return partition; }
第二種:指定數(shù)量進行拆分
導(dǎo)入google的guava工具包 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> private List<List<String>> partition(List<String> originalList) { // 指定數(shù)量 -> 每1000個拆分成一個小集合 List<List<String>> partition = Lists.partition(originalList, 1000); return partition; }
第三種:根據(jù)條件進行拆分
private List<List<Integer>> partition() { List<Integer> numbers = Arrays.asList(10, 20, 30, 40, 50, 60, 70, 80, 90); List<List<Integer>> groups = new ArrayList<>(); groups.add(new ArrayList<>()); // 小于等于50 groups.add(new ArrayList<>()); // 大于50 for (Integer number : numbers) { if (number <= 50) { groups.get(0).add(number); } else { groups.get(1).add(number); } } return groups; }
總結(jié)
到此這篇關(guān)于Java把list分成多個list的文章就介紹到這了,更多相關(guān)Java把list分成多個list內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中@ControllerAdvice注解的用法解析
這篇文章主要介紹了Spring中@ControllerAdvice注解的用法解析,顧名思義,@ControllerAdvice就是@Controller 的增強版,@ControllerAdvice主要用來處理全局?jǐn)?shù)據(jù),一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用,需要的朋友可以參考下2023-10-10Java 中的 Class.forName(類名) 使用及原理解析
Class.forName是Java中用于動態(tài)加載類的強大工具,廣泛應(yīng)用于數(shù)據(jù)庫驅(qū)動加載、反射機制和插件系統(tǒng)等場景,它通過ClassLoader加載類并執(zhí)行靜態(tài)初始化代碼,但在使用時需要注意類路徑、初始化副作用和類加載器的選擇等問題,感興趣的朋友一起看看吧2024-12-12如何使用java.security.SecureRandom安全生成隨機數(shù)和隨機字符串工具類
這篇文章主要給大家介紹了關(guān)于如何使用java.security.SecureRandom安全生成隨機數(shù)和隨機字符串工具類的相關(guān)資料,SecureRandom擴展了Random類,并通過在java 8中添加的新方法得到了豐富,需要的朋友可以參考下2024-05-05SpringBoot多數(shù)據(jù)源切換實現(xiàn)代碼(Mybaitis)
實際工作中我們會遇到springboot項目初始化啟動時候,不能指定具體連接哪個數(shù)據(jù)源的時候,不同的接口連接不同的數(shù)據(jù)源或者前端頁面指定連接某個數(shù)據(jù)源等等情況,就會遇到動態(tài)數(shù)據(jù)源切換的問題,需要的朋友可以參考下2022-04-04詳解Spring bean的注解注入之@Autowired的原理及使用
之前講過bean注入是什么,也使用了xml的配置文件進行bean注入,這也是Spring的最原始的注入方式(xml注入).本文主要講解的注解有以下幾個:@Autowired、 @Service、@Repository、@Controller 、@Component、@Bean、@Configuration、@Resource ,需要的朋友可以參考下2021-06-06Scala 操作Redis使用連接池工具類RedisUtil
這篇文章主要介紹了Scala 操作Redis使用連接池工具類RedisUtil,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06MyBatis多表關(guān)聯(lián)查詢的實現(xiàn)示例
本文主要介紹了MyBatis多表關(guān)聯(lián)查詢的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03