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)
ArrayListT - 集合元素类型isLinked - 是否新建LinkedListiterable - Iterablepublic static <T> List<T> list(boolean isLinked, Iterator<T> iter)
ArrayListT - 集合元素类型isLinked - 是否新建LinkedListiter - Iteratorpublic static <T> List<T> list(boolean isLinked, Enumeration<T> enumration)
ArrayListT - 集合元素类型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 - 集合CopyOnWriteArrayListpublic static <T> ArrayList<T> toList(Collection<T> collection)
T - 集合元素类型collection - 集合public static <T> ArrayList<T> toList(Iterable<T> iterable)
ArrayListT - 集合元素类型iterable - Iterablepublic static <T> ArrayList<T> toList(Iterator<T> iterator)
ArrayListT - 集合元素类型iterator - Iteratorpublic static <T> ArrayList<T> toList(Enumeration<T> enumeration)
ArrayListT - 集合元素类型enumeration - Enumerationpublic 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 - ComparatorCollections.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) * 10T - 元素类型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 © 2025. All rights reserved.