public class ListUtil extends Object
Constructor and Description |
---|
ListUtil() |
Modifier and Type | Method and Description |
---|---|
static <T> List<T> |
empty()
获取一个空List,这个空List不可变
|
static <T> int[] |
indexOfAll(List<T> list,
Matcher<T> matcher)
获取匹配规则定义中匹配到元素的所有位置
|
static <T> int |
lastIndexOf(List<T> list,
Matcher<T> matcher)
获取匹配规则定义中匹配到元素的最后位置
此方法对于某些无序集合的位置信息,以转换为数组后的位置为准。 |
static <T> List<T> |
list(boolean isLinked)
新建一个空List
|
static <T> List<T> |
list(boolean isLinked,
Collection<T> collection)
新建一个List
|
static <T> List<T> |
list(boolean isLinked,
Enumeration<T> enumration)
新建一个List
提供的参数为null时返回空 ArrayList |
static <T> List<T> |
list(boolean isLinked,
Iterable<T> iterable)
新建一个List
提供的参数为null时返回空 ArrayList |
static <T> List<T> |
list(boolean isLinked,
Iterator<T> iter)
新建一个List
提供的参数为null时返回空 ArrayList |
static <T> List<T> |
list(boolean isLinked,
T... values)
新建一个List
|
static <T> List<T> |
move(List<T> list,
T element,
int newPosition)
将元素移动到指定列表的新位置。
|
static <T> List<T> |
of(T... ts)
数组转为一个不可变List
类似于Java9中的List.of |
static <T> List<T> |
page(int pageNo,
int pageSize,
List<T> list)
对指定List分页取值
|
static <T> void |
page(List<T> list,
int pageSize,
Consumer<List<T>> pageListConsumer)
对指定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,
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<List<T>> |
split(List<T> list,
int size)
对集合按照指定长度分段,每一个段为单独的集合,返回这个集合的列表
需要特别注意的是,此方法调用
List.subList(int, int) 切分List,
此方法返回的是原List的视图,也就是说原List有变更,切分后的结果也会变更。 |
static <T> List<List<T>> |
splitAvg(List<T> list,
int limit)
将集合平均分成多个list,返回这个集合的列表
例:
ListUtil.splitAvg(null, 3); // []
ListUtil.splitAvg(Arrays.asList(1, 2, 3, 4), 2); // [[1, 2], [3, 4]]
ListUtil.splitAvg(Arrays.asList(1, 2, 3), 5); // [[1], [2], [3], [], []]
ListUtil.splitAvg(Arrays.asList(1, 2, 3), 2); // [[1, 2], [3]]
|
static <T> List<T> |
sub(List<T> list,
int start,
int end)
截取集合的部分
|
static <T> List<T> |
sub(List<T> list,
int start,
int end,
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> CopyOnWriteArrayList<T> |
toCopyOnWriteArrayList(Collection<T> collection)
新建一个CopyOnWriteArrayList
|
static <T> LinkedList<T> |
toLinkedList(T... values)
新建LinkedList
|
static <T> ArrayList<T> |
toList(Collection<T> collection)
新建一个ArrayList
|
static <T> ArrayList<T> |
toList(Enumeration<T> enumeration)
新建一个ArrayList
提供的参数为null时返回空 ArrayList |
static <T> ArrayList<T> |
toList(Iterable<T> iterable)
新建一个ArrayList
提供的参数为null时返回空 ArrayList |
static <T> ArrayList<T> |
toList(Iterator<T> iterator)
新建一个ArrayList
提供的参数为null时返回空 ArrayList |
static <T> ArrayList<T> |
toList(T... values)
新建一个ArrayList
|
static <T> List<T> |
unmodifiable(List<T> list)
将对应List转换为不可修改的List
|
public static <T> List<T> list(boolean isLinked)
T
- 集合元素类型isLinked
- 是否新建LinkedList@SafeVarargs public static <T> List<T> list(boolean isLinked, T... values)
T
- 集合元素类型isLinked
- 是否新建LinkedListvalues
- 数组public static <T> List<T> list(boolean isLinked, Collection<T> collection)
T
- 集合元素类型isLinked
- 是否新建LinkedListcollection
- 集合public static <T> List<T> list(boolean isLinked, Iterable<T> iterable)
ArrayList
T
- 集合元素类型isLinked
- 是否新建LinkedListiterable
- Iterable
public static <T> List<T> list(boolean isLinked, Iterator<T> iter)
ArrayList
T
- 集合元素类型isLinked
- 是否新建LinkedListiter
- Iterator
public static <T> List<T> list(boolean isLinked, Enumeration<T> enumration)
ArrayList
T
- 集合元素类型isLinked
- 是否新建LinkedListenumration
- Enumeration
@SafeVarargs public static <T> ArrayList<T> toList(T... values)
T
- 集合元素类型values
- 数组@SafeVarargs public static <T> LinkedList<T> toLinkedList(T... values)
T
- 类型values
- 数组@SafeVarargs public static <T> List<T> of(T... ts)
T
- 对象类型ts
- 对象public static <T> CopyOnWriteArrayList<T> toCopyOnWriteArrayList(Collection<T> collection)
T
- 集合元素类型collection
- 集合CopyOnWriteArrayList
public static <T> ArrayList<T> toList(Collection<T> collection)
T
- 集合元素类型collection
- 集合public static <T> ArrayList<T> toList(Iterable<T> iterable)
ArrayList
T
- 集合元素类型iterable
- Iterable
public static <T> ArrayList<T> toList(Iterator<T> iterator)
ArrayList
T
- 集合元素类型iterator
- Iterator
public static <T> ArrayList<T> toList(Enumeration<T> enumeration)
ArrayList
T
- 集合元素类型enumeration
- Enumeration
public static <T> List<T> page(int pageNo, int pageSize, List<T> list)
T
- 集合元素类型pageNo
- 页码,第一页的页码取决于PageUtil.getFirstPageNo()
,默认0pageSize
- 每页的条目数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, Comparator<? super T> c)
T
- 元素类型list
- 被排序的Listc
- Comparator
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
- 被反转的Listpublic 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后,设置值(list.size() + 1) * 10
T
- 元素类型list
- List列表index
- 位置element
- 新元素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 start, int end)
T
- 集合元素类型list
- 被截取的数组start
- 开始位置(包含)end
- 结束位置(不包含)public static <T> List<T> sub(List<T> list, int start, int end, int step)
List.subList(int, int)
不同在于子列表是新的副本,操作子列表不会影响原列表。T
- 集合元素类型list
- 被截取的数组start
- 开始位置(包含)end
- 结束位置(不包含)step
- 步进public static <T> int lastIndexOf(List<T> list, Matcher<T> matcher)
T
- 元素类型list
- List集合matcher
- 匹配器,为空则全部匹配public static <T> int[] indexOfAll(List<T> list, Matcher<T> matcher)
T
- 元素类型list
- 列表matcher
- 匹配器,为空则全部匹配public static <T> List<T> unmodifiable(List<T> list)
T
- 元素类型list
- Listpublic static <T> List<T> empty()
T
- 元素类型Collections.emptyList()
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>> split(List<T> list, int size)
需要特别注意的是,此方法调用List.subList(int, int)
切分List,
此方法返回的是原List的视图,也就是说原List有变更,切分后的结果也会变更。
T
- 集合元素类型list
- 列表,为空时返回empty()
size
- 每个段的长度,当长度超过list长度时,size按照list长度计算,即只返回一个节点partition(List, int)
public static <T> List<List<T>> splitAvg(List<T> list, int limit)
例:
ListUtil.splitAvg(null, 3); // [] ListUtil.splitAvg(Arrays.asList(1, 2, 3, 4), 2); // [[1, 2], [3, 4]] ListUtil.splitAvg(Arrays.asList(1, 2, 3), 5); // [[1], [2], [3], [], []] ListUtil.splitAvg(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> move(List<T> list, T element, int newPosition)
T
- 列表和元素的通用类型。list
- 原始列表,元素将在这个列表上进行操作。element
- 需要移动的元素。newPosition
- 元素的新位置,从0开始计数,位置计算是以移除元素后的列表位置计算的Copyright © 2024. All rights reserved.