【Java第66集】java CollectionUtils工具类详解

【Java第66集】java CollectionUtils工具类详解

文章目录

一、依赖引入二、核心方法分类及示例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 collection, T... elements)`5.2 `addIgnoreNull(Collection collection, T element)`5.3 `synchronizedCollection(Collection collection)`5.4 `unmodifiableCollection(Collection 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 的依赖:

org.apache.commons

commons-collections4

4.4

二、核心方法分类及示例

1. 集合空值判断

1.1 isEmpty(Collection collection)

功能:判断集合是否为 null 或空。示例:List list = new ArrayList<>();

boolean isEmpty = CollectionUtils.isEmpty(list); // true

1.2 isNotEmpty(Collection collection)

功能:判断集合是否非空。示例:List list = Arrays.asList("a", "b");

boolean isNotEmpty = CollectionUtils.isNotEmpty(list); // true

1.3 size(Collection collection)

功能:返回集合大小,若集合为 null,返回 0。示例:List list = null;

int size = CollectionUtils.size(list); // 0

2. 集合运算

2.1 union(Collection coll1, Collection coll2)

功能:返回两个集合的并集(去重)。示例:List list1 = Arrays.asList("A", "B", "C");

List list2 = Arrays.asList("B", "C", "D");

Collection union = CollectionUtils.union(list1, list2);

System.out.println(union); // [A, B, C, D]

2.2 intersection(Collection coll1, Collection coll2)

功能:返回两个集合的交集。示例:Collection intersection = CollectionUtils.intersection(list1, list2);

System.out.println(intersection); // [B, C]

2.3 subtract(Collection baseCollection, Collection collectionToRemove)

功能:从 baseCollection 中移除 collectionToRemove 的元素,返回差集。示例:Collection subtract = CollectionUtils.subtract(list1, list2);

System.out.println(subtract); // [A]

2.4 disjunction(Collection coll1, Collection coll2)

功能:返回两个集合的对称差集(即 (A - B) ∪ (B - A))。示例:Collection disjunction = CollectionUtils.disjunction(list1, list2);

System.out.println(disjunction); // [A, D]

3. 集合过滤与转换

3.1 filter(Collection collection, Predicate predicate)

功能:根据条件过滤集合元素。示例:List numbers = Arrays.asList(1, 2, 3, 4, 5);

CollectionUtils.filter(numbers, n -> (Integer) n % 2 == 0);

System.out.println(numbers); // [2, 4]

3.2 collect(Collection inputCollection, Transformer transformer)

功能:对集合元素进行转换。示例:List strings = Arrays.asList("1", "2", "3");

List integers = CollectionUtils.collect(strings, s -> Integer.parseInt(s.toString()));

System.out.println(integers); // [1, 2, 3]

3.3 transformedList(Collection collection, Transformer transformer)

功能:返回一个转换后的新集合。示例:List strings = Arrays.asList("a", "b", "c");

List upperCase = CollectionUtils.transformedList(strings, s -> s.toString().toUpperCase());

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 list = Arrays.asList("apple", "banana", "apple", "orange");

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 collection, T... elements)

功能:向集合中添加多个元素。示例:List list = new ArrayList<>();

CollectionUtils.addAll(list, "A", "B", "C");

System.out.println(list); // [A, B, C]

5.2 addIgnoreNull(Collection collection, T element)

功能:忽略 null 元素,避免抛出异常。示例:List list = new ArrayList<>();

CollectionUtils.addIgnoreNull(list, "Hello");

CollectionUtils.addIgnoreNull(list, null); // 不添加

System.out.println(list); // [Hello]

5.3 synchronizedCollection(Collection collection)

功能:创建线程安全的集合。示例:List synchronizedList = CollectionUtils.synchronizedCollection(new ArrayList<>());

5.4 unmodifiableCollection(Collection collection)

功能:创建不可变集合。示例:List unmodifiableList = CollectionUtils.unmodifiableCollection(Arrays.asList("A", "B"));

6. 其他实用方法

6.1 emptyIfNull(Collection collection)

功能:若集合为 null,返回空集合;否则返回原集合。示例:List safeList = CollectionUtils.emptyIfNull(null);

6.2 get(Object object, int index)

功能:安全获取集合元素(支持 null 和越界处理)。示例:List list = Arrays.asList("A", "B", "C");

String element = CollectionUtils.get(list, 1); // B

三、典型应用场景

1. 合并并去重

List list1 = Arrays.asList("A", "B");

List list2 = Arrays.asList("B", "C");

Collection merged = CollectionUtils.union(list1, list2);

System.out.println(merged); // [A, B, C]

2. 过滤偶数

List numbers = Arrays.asList(1, 2, 3, 4, 5);

CollectionUtils.filter(numbers, n -> (Integer) n % 2 == 0);

System.out.println(numbers); // [2, 4]

3. 统计元素出现次数

List list = Arrays.asList("apple", "banana", "apple");

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 collection, T... elements)添加多个元素到集合addIgnoreNull(Collection collection, T element)忽略 null 元素添加containsAny(Collection coll1, Collection coll2)判断两个集合是否有交集union(Collection coll1, Collection coll2)返回并集intersection(Collection coll1, Collection coll2)返回交集subtract(Collection baseCollection, Collection collectionToRemove)返回差集disjunction(Collection coll1, Collection coll2)返回对称差集frequency(Collection coll, Object object)统计元素出现次数isEqualCollection(Collection a, Collection b)判断两个集合是否完全相同filter(Collection collection, Predicate predicate)过滤集合元素collect(Collection inputCollection, Transformer transformer)转换集合元素transformedList(Collection collection, Transformer transformer)返回转换后的新集合synchronizedCollection(Collection collection)创建线程安全集合unmodifiableCollection(Collection collection)创建不可变集合emptyIfNull(Collection collection)若集合为 null,返回空集合get(Object object, int index)安全获取集合元素(支持 null 和越界处理)

六、总结

CollectionUtils 是 Apache Commons Collections 中不可或缺的工具类,极大简化了 Java 集合的常见操作。通过其丰富的 API,开发者可以轻松实现集合的空值判断、集合运算、过滤、转换、统计等功能。在实际开发中,合理使用 CollectionUtils 能显著提升代码的简洁性和可维护性。

相关推荐

365bet官方网站下载 如何使用 iPhone 拍摄“长曝光”照片?

如何使用 iPhone 拍摄“长曝光”照片?

📅 07-25 👁️ 5672
sport365 风声边界吉他谱_羽泉_G调和弦弹唱谱

风声边界吉他谱_羽泉_G调和弦弹唱谱

📅 07-16 👁️ 3790
sport365 Ubuntu设置中文界面

Ubuntu设置中文界面

📅 08-06 👁️ 6994