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