天天看點

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]           

感謝大家的閱讀,碼字不易,感謝支援,喜歡的給個贊吧~