public class ListUtil extends Object
Constructor and Description |
---|
ListUtil() |
Modifier and Type | Method and Description |
---|---|
static <T> List<T> |
addAllIfNotContains(List<T> list,
List<T> otherList)
将另一个列表中的元素加入到列表中,如果列表中已经存在此元素则忽略之
|
static <T> List<List<T>> |
avgPartition(List<T> list,
int limit)
将集合平均分成多个list,返回这个集合的列表
例:
ListUtil.avgPartition(null, 3); // []
ListUtil.avgPartition(Arrays.asList(1, 2, 3, 4), 2); // [[1, 2], [3, 4]]
ListUtil.avgPartition(Arrays.asList(1, 2, 3), 5); // [[1], [2], [3], [], []]
ListUtil.avgPartition(Arrays.asList(1, 2, 3), 2); // [[1, 2], [3]]
|
static <T> List<T> |
empty()
获取一个空List,这个空List不可变
|
static <T> int |
lastIndexOf(List<T> list,
Predicate<? super T> matcher)
获取匹配规则定义中匹配到元素的最后位置
此方法对于某些无序集合的位置信息,以转换为数组后的位置为准。 |
static <T> List<T> |
move(List<T> list,
T element,
int newPosition)
将元素移动到指定列表的新位置。
|
static <T> List<T> |
of(boolean isLinked)
新建一个List
如果提供的初始化数组为空,新建默认初始长度的List |
static <T> List<T> |
of(boolean isLinked,
Enumeration<T> enumration)
新建一个List
提供的参数为null时返回空 ArrayList |
static <T> List<T> |
of(boolean isLinked,
Iterable<T> iterable)
新建一个List
提供的参数为null时返回空 ArrayList |
static <T> List<T> |
of(boolean isLinked,
Iterator<T> iter)
新建一个List
提供的参数为null时返回空 ArrayList |
static <T> ArrayList<T> |
of(Enumeration<T> enumeration)
新建一个ArrayList
提供的参数为null时返回空 ArrayList |
static <T> ArrayList<T> |
of(Iterable<T> iterable)
新建一个ArrayList
提供的参数为null时返回空 ArrayList |
static <T> ArrayList<T> |
of(Iterator<T> iterator)
新建一个ArrayList
提供的参数为null时返回空 ArrayList |
static <T> ArrayList<T> |
of(T... values)
|
static <T> CopyOnWriteArrayList<T> |
ofCopyOnWrite(Collection<T> collection)
新建一个CopyOnWriteArrayList
|
static <T> CopyOnWriteArrayList<T> |
ofCopyOnWrite(T... ts)
新建一个CopyOnWriteArrayList
|
static <T> LinkedList<T> |
ofLinked(T... values)
新建一个
LinkedList 如果提供的初始化数组为空,新建默认初始长度的List |
static <T> void |
page(List<T> list,
int pageSize,
Consumer<List<T>> pageListConsumer)
对指定List进行分页,逐页返回数据
|
static <T> List<T> |
page(List<T> list,
int pageNo,
int pageSize)
对指定List分页取值
|
static <T> List<T> |
page(List<T> list,
PageInfo pageInfo)
对指定List分页取值
|
static <T> List<List<T>> |
partition(List<T> list,
int size)
通过传入分区长度,将指定列表分区为不同的块,每块区域的长度相同(最后一块可能小于长度)
分区是在原List的基础上进行的,返回的分区是不可变的抽象列表,原列表元素变更,分区中元素也会变更。 |
static <T> List<T> |
reverse(List<T> list)
反序给定List,会在原List基础上直接修改
注意此方法不支持不可编辑的列表 |
static <T> List<T> |
reverseNew(List<T> list)
反序给定List,会创建一个新的List,原List数据不变
|
static <T> List<T> |
setOrAppend(List<T> list,
int index,
T element)
设置或增加元素。
|
static <T> List<T> |
setOrPadding(List<T> list,
int index,
T element)
在指定位置设置元素。
|
static <T> List<T> |
setOrPadding(List<T> list,
int index,
T element,
T paddingElement)
在指定位置设置元素。
|
static <T> List<T> |
setOrPadding(List<T> list,
int index,
T element,
T paddingElement,
int indexLimit)
在指定位置设置元素。
|
static <T> List<T> |
sort(List<T> list)
针对List自然排序,排序会修改原List
|
static <T> List<T> |
sort(List<T> list,
Comparator<? super T> c)
针对List排序,排序会修改原List
|
static List<String> |
sortByPinyin(List<String> list)
根据汉字的拼音顺序排序
|
static <T> List<T> |
sortByProperty(List<T> list,
String property)
根据Bean的属性排序
|
static <T> List<T> |
splice(List<T> list,
int start,
int deleteCount,
T... items)
通过删除或替换现有元素或者原地添加新的元素来修改列表,并以列表形式返回被修改的内容。
|
static <T> List<T> |
sub(List<T> list,
int begionInclude,
int endExclude)
截取集合的部分
|
static <T> List<T> |
sub(List<T> list,
int begionInclude,
int endExclude,
int step)
截取集合的部分
此方法与 List.subList(int, int) 不同在于子列表是新的副本,操作子列表不会影响原列表。 |
static <T> void |
swapElement(List<T> list,
T element,
T targetElement)
将指定元素交换到指定元素位置,其他元素的索引值不变
交换会修改原List 如果集合中有多个相同元素,只交换第一个找到的元素 |
static <T> void |
swapTo(List<T> list,
T element,
Integer targetIndex)
将指定元素交换到指定索引位置,其他元素的索引值不变
交换会修改原List 如果集合中有多个相同元素,只交换第一个找到的元素 |
static <T> List<T> |
unmodifiable(List<? extends T> c)
转为只读List
|
static <T> List<T> |
view(List<T> ts)
转为一个不可变List
类似于Java9中的List.of |
static <T> List<T> |
view(T... ts)
数组转为一个不可变List
类似于Java9中的List.of 不同于Arrays.asList,此方法不允许修改数组 |
static <T> List<T> |
zero()
获取一个初始大小为0的List,这个空List可变
|
@SafeVarargs public static <T> ArrayList<T> of(T... values)
T
- 集合元素类型values
- 数组,可以为null
@SafeVarargs public static <T> LinkedList<T> ofLinked(T... values)
LinkedList
T
- 集合元素类型values
- 数组,可以为null
LinkedList
对象public static <T> List<T> of(boolean isLinked)
T
- 集合元素类型isLinked
- 是否为链表public static <T> List<T> of(boolean isLinked, Iterable<T> iterable)
ArrayList
T
- 集合元素类型isLinked
- 是否新建LinkedListiterable
- Iterable
public static <T> List<T> of(boolean isLinked, Enumeration<T> enumration)
ArrayList
T
- 集合元素类型isLinked
- 是否新建LinkedListenumration
- Enumeration
public static <T> List<T> of(boolean isLinked, Iterator<T> iter)
ArrayList
T
- 集合元素类型isLinked
- 是否新建LinkedListiter
- Iterator
public static <T> ArrayList<T> of(Iterable<T> iterable)
ArrayList
T
- 集合元素类型iterable
- Iterable
public static <T> ArrayList<T> of(Iterator<T> iterator)
ArrayList
T
- 集合元素类型iterator
- Iterator
public static <T> ArrayList<T> of(Enumeration<T> enumeration)
ArrayList
T
- 集合元素类型enumeration
- Enumeration
@SafeVarargs public static <T> List<T> view(T... ts)
T
- 对象类型ts
- 对象public static <T> List<T> view(List<T> ts)
T
- 对象类型ts
- 对象null
或者空,返回Collections.emptyList()
public static <T> List<T> empty()
T
- 元素类型Collections.emptyList()
public static <T> List<T> zero()
T
- 元素类型public static <T> CopyOnWriteArrayList<T> ofCopyOnWrite(Collection<T> collection)
T
- 集合元素类型collection
- 集合CopyOnWriteArrayList
@SafeVarargs public static <T> CopyOnWriteArrayList<T> ofCopyOnWrite(T... ts)
T
- 集合元素类型ts
- 集合CopyOnWriteArrayList
public static <T> List<T> page(List<T> list, int pageNo, int pageSize)
T
- 集合元素类型pageNo
- 页码,第一页的页码,从0开始pageSize
- 每页的条目数list
- 列表public static <T> List<T> page(List<T> list, PageInfo pageInfo)
T
- 集合元素类型pageInfo
- 分页信息list
- 列表public static <T> void page(List<T> list, int pageSize, Consumer<List<T>> pageListConsumer)
T
- 集合元素类型list
- 源数据列表pageSize
- 每页的条目数pageListConsumer
- 单页数据函数式返回public static <T> List<T> sort(List<T> list)
T
- 元素类型list
- 被排序的ListCollections.sort(List, Comparator)
public static <T> List<T> sort(List<T> list, Comparator<? super T> c)
T
- 元素类型list
- 被排序的Listc
- Comparator
,null表示自然排序(null安全的)Collections.sort(List, Comparator)
public static <T> List<T> sortByProperty(List<T> list, String property)
T
- 元素类型list
- Listproperty
- 属性名public static List<String> sortByPinyin(List<String> list)
list
- Listpublic static <T> List<T> reverse(List<T> list)
T
- 元素类型list
- 被反转的ListCollections.reverse(List)
public static <T> List<T> reverseNew(List<T> list)
T
- 元素类型list
- 被反转的Listpublic static <T> List<T> setOrAppend(List<T> list, int index, T element)
T
- 元素类型list
- List列表index
- 位置element
- 新元素public static <T> List<T> setOrPadding(List<T> list, int index, T element)
null
直到到达index后,设置值T
- 元素类型list
- List列表index
- 位置element
- 新元素public static <T> List<T> setOrPadding(List<T> list, int index, T element, T paddingElement)
paddingElement
直到到达index后,设置值T
- 元素类型list
- List列表index
- 位置,不能大于(list.size()+1) * 2element
- 新元素paddingElement
- 填充的值public static <T> List<T> setOrPadding(List<T> list, int index, T element, T paddingElement, int indexLimit)
paddingElement
直到到达index后,设置值T
- 元素类型list
- List列表index
- 位置element
- 新元素paddingElement
- 填充的值indexLimit
- 最大索引限制public static <T> List<T> sub(List<T> list, int begionInclude, int endExclude)
T
- 集合元素类型list
- 被截取的数组begionInclude
- 开始位置(包含)endExclude
- 结束位置(不包含)public static <T> List<T> sub(List<T> list, int begionInclude, int endExclude, int step)
List.subList(int, int)
不同在于子列表是新的副本,操作子列表不会影响原列表。T
- 集合元素类型list
- 被截取的数组begionInclude
- 开始位置(包含)endExclude
- 结束位置(不包含)step
- 步进public static <T> int lastIndexOf(List<T> list, Predicate<? super T> matcher)
T
- 元素类型list
- List集合matcher
- 匹配器,为空则全部匹配public static <T> List<List<T>> partition(List<T> list, int size)
需要特别注意的是,此方法调用List.subList(int, int)
切分List,
此方法返回的是原List的视图,也就是说原List有变更,切分后的结果也会变更。
T
- 集合元素类型list
- 列表,为空时返回empty()
size
- 每个段的长度,当长度超过list长度时,size按照list长度计算,即只返回一个节点public static <T> List<List<T>> avgPartition(List<T> list, int limit)
例:
ListUtil.avgPartition(null, 3); // [] ListUtil.avgPartition(Arrays.asList(1, 2, 3, 4), 2); // [[1, 2], [3, 4]] ListUtil.avgPartition(Arrays.asList(1, 2, 3), 5); // [[1], [2], [3], [], []] ListUtil.avgPartition(Arrays.asList(1, 2, 3), 2); // [[1, 2], [3]]
T
- 集合元素类型list
- 集合limit
- 要均分成几个listpublic static <T> void swapTo(List<T> list, T element, Integer targetIndex)
T
- 元素类型list
- 列表element
- 需交换元素targetIndex
- 目标索引public static <T> void swapElement(List<T> list, T element, T targetElement)
T
- 元素类型list
- 列表element
- 需交换元素targetElement
- 目标元素public static <T> List<T> unmodifiable(List<? extends T> c)
T
- 元素类型c
- 集合public static <T> List<T> addAllIfNotContains(List<T> list, List<T> otherList)
T
- 集合元素类型list
- 列表otherList
- 其它列表@SafeVarargs public static <T> List<T> splice(List<T> list, int start, int deleteCount, T... items)
T
- 元素类型list
- 列表start
- 指定修改的开始位置(从 0 计数), 可以为负数, -1代表最后一个元素deleteCount
- 删除个数,必须是正整数items
- 放入的元素public static <T> List<T> move(List<T> list, T element, int newPosition)
T
- 列表和元素的通用类型。list
- 原始列表,元素将在这个列表上进行操作。element
- 需要移动的元素。newPosition
- 元素的新位置,从0开始计数,位置计算是以移除元素后的列表位置计算的Copyright © 2025. All rights reserved.