# 集合相关操作
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)