# 集合相关操作

  • java.util.Collections

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

  • org.springframework.util.CollectionUtils

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

# 1. 集合的判空

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

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

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

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

# 2.1 是否包含

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)

# 2.2 是否有重复元素

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

boolean hasUniqueObject(Collection<?> collection)

# 2.3 二分查找并返回

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

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

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

<T> int binarySearch(List<? extends Comparable<? super T>> list, T key);

# 2.4 返回最大、最小元素

<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);

# 2.5 返回 Collection 中最后一个元素

<T> T lastElement(List<T> list)  
<T> T lastElement(Set<T> set) 

# 2.6 返回 Collection 中元素的类型

Class<?> findCommonElementType(Collection<?> collection)

# 2.7 计算元素出现的次数

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

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

int frequency(Collection c, Object o)

# 3. 添加元素

# 3.1 Collection 添加元素

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

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

<T> boolean addAll(Collection<? super T> c, T... elements)

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

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

<E> void mergeArrayIntoCollection(Object array, Collection<E> collection)  

# 3.2 Map 添加元素

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

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

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

# 4. 集合变序

“变序” 包括:

  • 交换元素
  • 排序
  • 反转顺序
  • “洗牌”

# 4.1 交换元素位置

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

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

public static 
void swap(List<?> list, int i, int j) 

# 4.2 排序

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)

# 4.3 反转顺序

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

public static void reverse(List<?> list)

# 4.4 洗牌

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

void shuffle(List<?> list)

# 5. 其他

# 5.1 是否没有交集

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

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