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