天天看点

100个Java工具类之32:集合工具类Apache之CollectionUtils

作者:一名小小程序员

本文主要讲述:字符串工具类Apache之

org.apache.commons.collections4.CollectionUtils

apache提供的工具类中,CollectionUtils使用场景是比较多的,功能也非常齐全,下面将具体介绍每种用法。

避免代码重复,影响阅读体验,因此将打印方法省略。

一、获取集合的并集、交集、补集、差集

//获取两集合并集(自动去重)
List<Integer> list1 = Stream.of(1, 2, 3).collect(Collectors.toList());
List<Integer> list2 = Stream.of(2, 3, 4).collect(Collectors.toList());
List<Integer> union = (List<Integer>) CollectionUtils.union(list1, list2);
输出:并集:[1, 2, 3, 4]

//获取两集合交集
List<Integer> intersection = (List<Integer>) CollectionUtils.intersection(list1, list2);
输出:[2, 3]

//获取两集合交集的补集:list1 + list2 - 交集
List<Integer> disjunction = (List<Integer>)CollectionUtils.disjunction(list1, list2);
输出:[1, 4]

//获取两集合的差集:list1 - 交集
List<Integer> subtract = (List<Integer>)CollectionUtils.subtract(list1, list2);
输出:[1]           
100个Java工具类之32:集合工具类Apache之CollectionUtils

二、集合判空和判非空

boolean flag = CollectionUtils.isEmpty(new ArrayList<>());
输出:true
boolean flag = CollectionUtils.isEmpty(null);
输出:true
List<String> list = new ArrayList<>();
list.add("");
//集合中有空字符串的元素,并不是空集合
boolean flag = CollectionUtils.isEmpty(list);
输出:false
boolean flag4 = CollectionUtils.isNotEmpty(list);
输出:true           

三、比较集合是否相等

两集合是否相等,比较的是集合元素和元素数量,与顺序无关。

List<Integer> list1 = Stream.of(1, 2).collect(Collectors.toList());
List<Integer> list2 = Stream.of(2, 1).collect(Collectors.toList());
boolean flag = CollectionUtils.isEqualCollection(list1, list2);
输出:true           
100个Java工具类之32:集合工具类Apache之CollectionUtils

四、集合中添加/删除另一个数组/集合

//集合添加数组
String[] arr = {"1", "2"};
List list = new ArrayList();
list.add("3");
CollectionUtils.addAll(list, arr);
System.out.println(list);
输出:[3, 1, 2]
List list2 = new ArrayList();
list2.add("4");
//集合添加集合
CollectionUtils.addAll(list, list2);
System.out.println(list);
输出:[3, 1, 2, 4]
//集合删除集合 需要注意的是:removeAll需要使用返回的新集合接收
list = (List) CollectionUtils.removeAll(list, list2);
输出:[3, 1, 2]           
100个Java工具类之32:集合工具类Apache之CollectionUtils

五、集合添加非空元素

List list = new ArrayList();
CollectionUtils.addIgnoreNull(list, null);
CollectionUtils.addIgnoreNull(list, "1");
输出:[1]           

六、获取集合中每个元素出现次数

List<String> list = Arrays.asList(new String[]{"1", "2", "2", "3"});
Map<String, Integer> map = CollectionUtils.getCardinalityMap(list);
输出:{1=1, 2=2, 3=1}           

七、获取集合元素并操作,相当于遍历

List<String> list = Arrays.asList(new String[]{"1", "2", "3"});
Collection collect = CollectionUtils.collect(list, value -> {
   return value += ".00";
});
输出:[1.00, 2.00, 3.00]           
100个Java工具类之32:集合工具类Apache之CollectionUtils

八、集合通过某规则进行过滤

List<Integer> list = new ArrayList<>();
list.addAll(Arrays.asList(1, 2, 3, 4, 5));
CollectionUtils.filterInverse(list, i -> {
   if(i % 2 == 0) {
      return true;
   }
   return false;
});
输出:[1, 3, 5]           

感谢大家的阅读,码字不易,感谢支持,喜欢的给个赞吧~