java代码之美(12)---CollectionUtils工具类

 的CollectionUtils工具类是在apache下的, 而不是springframework下的CollectionUtils。

个人觉得CollectionUtils在真实项目中,可以使你的代码更加简洁和安全。

所以需要倒入相关jar包,目前从maven找到最新jar包如下:

    <dependency>         <groupId>org.apache.commons</groupId>         <artifactId>commons-collections4</artifactId>         <version>4.3</version>     </dependency>

一、API常用方法

        /**          * 1、除非元素为null,否则向集合添加元素          */         CollectionUtils.addIgnoreNull(personList,null);         /**          * 2、将两个已排序的集合a和b合并为一个已排序的列表,以便保留元素的自然顺序          */         CollectionUtils.collate(Iterable<? extends O> a, Iterable<? extends O> b)         /**          * 3、将两个已排序的集合a和b合并到一个已排序的列表中,以便保留根据Comparator c的元素顺序。          */         CollectionUtils.collate(Iterable<? extends O> a, Iterable<? extends O> b, Comparator<? super O> c)         /**          * 4、返回该个集合中是否含有至少有一个元素          */         CollectionUtils.containsAny(Collection<?> coll1, T... coll2)         /**          * 5、如果参数是null,则返回不可变的空集合,否则返回参数本身。(很实用 ,最终返回List EMPTY_LIST = new EmptyList<>())          */         CollectionUtils.emptyIfNull(Collection<T> collection)         /**          * 6、空安全检查指定的集合是否为空          */         CollectionUtils.isEmpty(Collection<?> coll)         /**          * 7、 空安全检查指定的集合是否为空。          */         CollectionUtils.isNotEmpty(Collection<?> coll)         /**          * 8、反转给定数组的顺序。          */         CollectionUtils.reverseArray(Object[] array);         /**          * 9、差集          */         CollectionUtils.subtract(Iterable<? extends O> a, Iterable<? extends O> b)         /**          * 10、并集          */         CollectionUtils.union(Iterable<? extends O> a, Iterable<? extends O> b)         /**          * 11、交集          */         CollectionUtils.intersection(Collection a, Collection b)         /**          *12、 交集的补集(析取)          */         CollectionUtils.disjunction(Collection a, Collection b)

 

二、非对象集合交、并、差处理

对于集合取交集、并集的处理其实有很多种方式,这里就介绍3种

  • 第一种 是CollectionUtils工具类
  • 第二种 是List自带方法
  • 第三种 是JDK1.8 stream 新特性

1、CollectionUtils工具类

下面对于基本数据(包扩String)类型中的集合进行demo示例。

 public static void main(String[] args) {         String[] arrayA = new String[] { "1", "2", "3", "4"};         String[] arrayB = new String[] { "3", "4", "5", "6" };         List<String> listA = Arrays.asList(arrayA);         List<String> listB = Arrays.asList(arrayB);          //1、并集 union         System.out.println(CollectionUtils.union(listA, listB));         //输出: [1, 2, 3, 4, 5, 6]          //2、交集 intersection         System.out.println(CollectionUtils.intersection(listA, listB));         //输出:[3, 4]          //3、交集的补集(析取)disjunction         System.out.println(CollectionUtils.disjunction(listA, listB));         //输出:[1, 2, 5, 6]          //4、差集(扣除)         System.out.println(CollectionUtils.subtract(listA, listB));         //输出:[1, 2]     }

关键字:

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信