文章目录
一、依赖引入二、核心方法分类及示例1. 集合空值判断1.1 `isEmpty(Collection> collection)`1.2 `isNotEmpty(Collection> collection)`1.3 `size(Collection> collection)`
2. 集合运算2.1 `union(Collection> coll1, Collection> coll2)`2.2 `intersection(Collection> coll1, Collection> coll2)`2.3 `subtract(Collection> baseCollection, Collection> collectionToRemove)`2.4 `disjunction(Collection> coll1, Collection> coll2)`
3. 集合过滤与转换3.1 `filter(Collection> collection, Predicate> predicate)`3.2 `collect(Collection> inputCollection, Transformer transformer)`3.3 `transformedList(Collection> collection, Transformer transformer)`
4. 集合比较与统计4.1 `containsAny(Collection> coll1, Collection> coll2)`4.2 `frequency(Collection> coll, Object object)`4.3 `isEqualCollection(Collection> a, Collection> b)`
5. 集合创建与特殊操作5.1 `addAll(Collection super T> collection, T... elements)`5.2 `addIgnoreNull(Collection
6. 其他实用方法6.1 `emptyIfNull(Collection> collection)`6.2 `get(Object object, int index)`
三、典型应用场景1. 合并并去重2. 过滤偶数3. 统计元素出现次数
四、注意事项与最佳实践五、完整方法列表六、总结
CollectionUtils 是 Apache Commons Collections 库中的一个核心工具类,用于简化集合(List, Set, Map 等)的操作。它提供了丰富的静态方法,涵盖集合的空值判断、集合运算、过滤、转换、统计等常见任务,显著减少了冗余代码,提高了开发效率。
一、依赖引入
使用 CollectionUtils 需要引入 Apache Commons Collections 的依赖:
二、核心方法分类及示例
1. 集合空值判断
1.1 isEmpty(Collection> collection)
功能:判断集合是否为 null 或空。示例:List
boolean isEmpty = CollectionUtils.isEmpty(list); // true
1.2 isNotEmpty(Collection> collection)
功能:判断集合是否非空。示例:List
boolean isNotEmpty = CollectionUtils.isNotEmpty(list); // true
1.3 size(Collection> collection)
功能:返回集合大小,若集合为 null,返回 0。示例:List
int size = CollectionUtils.size(list); // 0
2. 集合运算
2.1 union(Collection> coll1, Collection> coll2)
功能:返回两个集合的并集(去重)。示例:List
List
Collection
System.out.println(union); // [A, B, C, D]
2.2 intersection(Collection> coll1, Collection> coll2)
功能:返回两个集合的交集。示例:Collection
System.out.println(intersection); // [B, C]
2.3 subtract(Collection> baseCollection, Collection> collectionToRemove)
功能:从 baseCollection 中移除 collectionToRemove 的元素,返回差集。示例:Collection
System.out.println(subtract); // [A]
2.4 disjunction(Collection> coll1, Collection> coll2)
功能:返回两个集合的对称差集(即 (A - B) ∪ (B - A))。示例:Collection
System.out.println(disjunction); // [A, D]
3. 集合过滤与转换
3.1 filter(Collection> collection, Predicate> predicate)
功能:根据条件过滤集合元素。示例:List
CollectionUtils.filter(numbers, n -> (Integer) n % 2 == 0);
System.out.println(numbers); // [2, 4]
3.2 collect(Collection> inputCollection, Transformer transformer)
功能:对集合元素进行转换。示例:List
List
System.out.println(integers); // [1, 2, 3]
3.3 transformedList(Collection> collection, Transformer transformer)
功能:返回一个转换后的新集合。示例:List
List
System.out.println(upperCase); // [A, B, C]
4. 集合比较与统计
4.1 containsAny(Collection> coll1, Collection> coll2)
功能:判断两个集合是否有交集。示例:boolean hasCommon = CollectionUtils.containsAny(list1, list2); // true
4.2 frequency(Collection> coll, Object object)
功能:统计指定元素在集合中出现的次数。示例:List
int count = CollectionUtils.frequency(list, "apple"); // 2
4.3 isEqualCollection(Collection> a, Collection> b)
功能:判断两个集合是否完全相同(元素相同,顺序无关)。示例:boolean isEqual = CollectionUtils.isEqualCollection(list1, list2); // false
5. 集合创建与特殊操作
5.1 addAll(Collection super T> collection, T... elements)
功能:向集合中添加多个元素。示例:List
CollectionUtils.addAll(list, "A", "B", "C");
System.out.println(list); // [A, B, C]
5.2 addIgnoreNull(Collection
功能:忽略 null 元素,避免抛出异常。示例:List
CollectionUtils.addIgnoreNull(list, "Hello");
CollectionUtils.addIgnoreNull(list, null); // 不添加
System.out.println(list); // [Hello]
5.3 synchronizedCollection(Collection> collection)
功能:创建线程安全的集合。示例:List
5.4 unmodifiableCollection(Collection> collection)
功能:创建不可变集合。示例:List
6. 其他实用方法
6.1 emptyIfNull(Collection> collection)
功能:若集合为 null,返回空集合;否则返回原集合。示例:List
6.2 get(Object object, int index)
功能:安全获取集合元素(支持 null 和越界处理)。示例:List
String element = CollectionUtils.get(list, 1); // B
三、典型应用场景
1. 合并并去重
List
List
Collection
System.out.println(merged); // [A, B, C]
2. 过滤偶数
List
CollectionUtils.filter(numbers, n -> (Integer) n % 2 == 0);
System.out.println(numbers); // [2, 4]
3. 统计元素出现次数
List
int count = CollectionUtils.frequency(list, "apple"); // 2
四、注意事项与最佳实践
依赖版本:
使用 commons-collections4,避免与旧版本 commons-collections 冲突。 线程安全:
使用 synchronizedCollection() 创建线程安全集合,但需注意并发修改问题。 不可变集合:
使用 unmodifiableCollection() 后,尝试修改集合会抛出 UnsupportedOperationException。 性能优化:
避免频繁使用 union 或 intersection 操作,这些方法会创建新集合。 Lambda 表达式:
在 Java 8+ 中,可以使用 Lambda 简化 Predicate 和 Transformer 的实现。
五、完整方法列表
方法名功能isEmpty(Collection> collection)判断集合是否为 null 或空isNotEmpty(Collection> collection)判断集合是否非空size(Collection> collection)返回集合大小,若为 null 返回 0addAll(Collection super T> collection, T... elements)添加多个元素到集合addIgnoreNull(Collection
六、总结
CollectionUtils 是 Apache Commons Collections 中不可或缺的工具类,极大简化了 Java 集合的常见操作。通过其丰富的 API,开发者可以轻松实现集合的空值判断、集合运算、过滤、转换、统计等功能。在实际开发中,合理使用 CollectionUtils 能显著提升代码的简洁性和可维护性。