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