Java中實現(xiàn)List分隔成子List詳解
前言
在工作中經(jīng)常遇到需要將數(shù)組分割成多個子數(shù)組,然后進行批量處理的需求。那有沒有比較優(yōu)雅的實現(xiàn)呢?
經(jīng)過多次實踐,總結出 ListUtils.partition 和 Lists.partition 兩種較好實現(xiàn) 。下面對這兩種實現(xià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 輸出結果

二 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 輸出結果

三 源碼分析
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),性能差不多。
總結
到此這篇關于Java中實現(xiàn)List分隔成子List詳解的文章就介紹到這了,更多相關Java List分隔成子List內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java Swing中的表格(JTable)和樹(JTree)組件使用實例
這篇文章主要介紹了Java Swing中的表格(JTable)和樹(JTree)組件使用實例,本文同時講解了表格和樹的基本概念、常用方法、代碼實例,需要的朋友可以參考下2014-10-10
Spring學習之開發(fā)環(huán)境搭建的詳細步驟
本篇文章主要介紹了Spring學習之開發(fā)環(huán)境搭建的詳細步驟,具有一定的參考價值,有興趣的可以了解一下2017-07-07

