# 集合相关操作

  • java.util.Collections

    Java JDK 在 java.util 包下提供了一个 Collections 工具类,用于对集合的各种常见操作。

  • org.springframework.util.CollectionUtils

    Spring 框架在 org.springframework.util 包下提供了一个 CollectionsUtils 工具类,用于对集合的各种常见操作。

# 1. 集合的判空

  • isEmpty 方法

    是否为空

    isEmpty 方法来自于 Spring 框架的 CollectionUtils 工具类。

    用于判断 List / Set / Map 是否为空。

    boolean isEmpty(Collection<?> collection)
    boolean isEmpty(Map<?,?> map)
    

# 2. 集合元素的查询、摘出与统计

  • contains / containsInstance / containsAny 方法

    是否包含

    contains / containsInstance / containsAny 方法来自于 Spring 框架的 CollectionsUtils 工具类。

    它们都是用来判断集合中是否包含某个对象,它们的区别在于:

    • contains 是以迭代器方式进行判断
    • containsInstance 是以常规方式进行判断
    • containsAny 是判断集合中否包含某些对象中的任意一个
    boolean contains(Iterator<?> iterator, Object element)
    boolean containsInstance(Collection<?> collection, Object element)
    boolean containsAny(Collection<?> source, Collection<?> candidates)
    
  • hasUniqueObject 方法

    是否有重复元素

    hasUniqueObject 方法来自于 Spring 框架的 CollectionUtils 工具类。

    boolean hasUniqueObject(Collection<?> collection)
    
  • binarySearch 方法

    二分查找并返回

    binarySearch 方法来自于 JDK 自带的 Collections 工具类。

    binarySearch 方法的使用有前提:List 必须是有序的。

    binarySearch 方法返回的是元素在 List 中的索引位置。

    <T> int binarySearch(List<? extends Comparable<? super T>> list, T key);
    
  • min / max 方法

    返回最大、最小元素
    <T> T min(Collection<? extends T> coll)<T> T max(Collection<? extends T> coll);
    
    // 同上。可自定义比较器
    <T> T min(Collection<? extends T> coll, Comparator<? super T> comp);
    <T> T max(Collection<? extends T> coll, Comparator<? super T> comp);
    
  • lastElement 方法

    返回 Collection 中最后一个元素
    <T> T lastElement(List<T> list)  
    <T> T lastElement(Set<T> set) 
    
  • findCommonElementType 方法

    返回 Collection 中元素的类型
    Class<?> findCommonElementType(Collection<?> collection)
    
  • frequency 方法

    计算元素出现的次数

    frequency 方法来自于 JDK 自带的 Collections 工具类。

    frequency 方法用于计算集合中某个元素出现的次数。

    int frequency(Collection c, Object o)
    

# 3. 添加元素

  • addAll / mergeArrayIntoCollection 方法

    Collection 添加元素

    addAll 方法来自于 JDK 的 java.util.Collections 工具类。

    addAll(Collection<? super T> c, T... elements),往集合中添加元素

    <T> boolean addAll(Collection<? super T> c, T... elements)
    
    Collection 添加元素

    mergeArrayIntoCollection 方法来自于 Spring 框架的 org.springframework.util.CollectionUtils 工具类。

    它实现了和 Collections.addAll 方法同样的功能。它会将参数 array 中的元素添加到参数 collection 中

    <E> void mergeArrayIntoCollection(Object array, Collection<E> collection)  
    
  • mergePropertiesIntoMap 方法

    Map 添加元素

    mergePropertiesIntoMap 方法来自于 Spring 框架的 CollectionUtils 工具类。

    将参数 props 中的元素添加到参数 map 中

    <K, V> void mergePropertiesIntoMap(Properties props, Map<K, V> map)
    

# 4. 集合变序

“变序” 包括:交换元素、排序、反转顺序、“洗牌”

  • swap 方法

    交换元素位置

    swap 方法来自 JDK 的 Collections 工具类。

    swap 方法能交换 List 中指定 2 个位置的元素。

    public static 
    void swap(List<?> list, int i, int j) 
    
  • sort 方法

    排序

    sort 方法来源于 JDK 的 java.util.Collections 工具类。功能是对参数 list 进行排序。

    sort 方法排完序之后 list 的顺序是自然顺序。

    <T extends Comparable<? super T>> void sort(List<T> list)
    
    // 同上,可自定义比较器
    public static <T> void sort(List<T> list, Comparator<? super T> c)
    
  • reverse 方法

    反转顺序

    reverse 方法来源于 JDK 的 java.util.Collections 工具类。

    public static void reverse(List<?> list)
    
  • shuffle 方法

    洗牌

    shuffle 方法来源于 JDK 自带的 Collections 工具类。功能是将参数 list 中的元素的顺序打乱。

    void shuffle(List<?> list)
    

# 5. 其他

  • disjoint 方法
是否没有交集

disjoint 方法来自于 JDK 自带的 Collections 工具类。它用于判断它的两个参数是否有交集。

boolean disjoint(Collection<?> c1, Collection<?> c2)