Java中實現(xiàn)List分隔成子List詳解
前言
在工作中經(jīng)常遇到需要將數(shù)組分割成多個子數(shù)組,然后進(jìn)行批量處理的需求。那有沒有比較優(yōu)雅的實現(xiàn)呢?
經(jīng)過多次實踐,總結(jié)出 ListUtils.partition 和 Lists.partition 兩種較好實現(xiàn) 。下面對這兩種實現(xiàn)分別進(jìn)行說明。
一 ListUtils.partition 方法
1.1 引入依賴
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency>
1.2 代碼演示
public static void main(String[] args) { //初始化數(shù)組 List<Integer> parList = new ArrayList<>(); IntStream.range(0, 30).forEach(parList::add); //分割成子數(shù)組 List<List<Integer>> subList = ListUtils.partition(parList, 10); //遍歷子數(shù)組 subList.forEach(list -> { System.out.println(String.format("subList size:%s", list.size())); System.out.println(String.format("list:%s", list.toString())); }); }
1.3 輸出結(jié)果
二 Lists.partition 方法
2.1 引入依賴
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>29.0-jre</version> </dependency>
2.2 代碼演示
public static void main(String[] args) { //初始化數(shù)組 List<Integer> parList = new ArrayList<>(); IntStream.range(0, 30).forEach(parList::add); //分割成子數(shù)組 List<List<Integer>> subList = Lists.partition(parList, 10); //遍歷子數(shù)組 subList.forEach(list -> { System.out.println(String.format("subList size:%s", list.size())); System.out.println(String.format("list:%s", list.toString())); }); }
2.3 輸出結(jié)果
三 源碼分析
3.1 ListUtils.partition 源碼分析
最終 ListUtils.partition 調(diào)用 ListUtils.Partition 方法來處理。
ListUtils.Partition 源碼如下:
Partition 類作為 ListUtils 靜態(tài)內(nèi)部類繼承 AbstractList 類。重寫了 get 和 size方法。
3.2 Lists.partition 源碼分析
Lists.partition 方法最終會調(diào)用 new Partition<>(list, size)。
Partition 類源碼如下:
Partition 類作為 Lists 靜態(tài)內(nèi)部類繼承 AbstractList 類。重寫了 get 、 size、isEmpty 方法。
四 性能對比
由于Lists.partition和ListUtils.partition底層實現(xiàn)都是通過Partition類來實現(xiàn),性能差不多。
總結(jié)
到此這篇關(guān)于Java中實現(xiàn)List分隔成子List詳解的文章就介紹到這了,更多相關(guān)Java List分隔成子List內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Swing中的表格(JTable)和樹(JTree)組件使用實例
這篇文章主要介紹了Java Swing中的表格(JTable)和樹(JTree)組件使用實例,本文同時講解了表格和樹的基本概念、常用方法、代碼實例,需要的朋友可以參考下2014-10-10Spring學(xué)習(xí)之開發(fā)環(huán)境搭建的詳細(xì)步驟
本篇文章主要介紹了Spring學(xué)習(xí)之開發(fā)環(huán)境搭建的詳細(xì)步驟,具有一定的參考價值,有興趣的可以了解一下2017-07-07