1. 程式人生 > >集合工具類CollectionUtils、ListUtils、SetUtils、MapUtils的使用

集合工具類CollectionUtils、ListUtils、SetUtils、MapUtils的使用

inter lis lec println clas 發現 pub sem xtend

主要用它的isEmpty(final Collection<?> coll)靜態方法來判斷一個給定的集合是否為null或者是否長度為0。最近才發現此工具類還可以取集合的交集、並集、甚至差集,集合1:[1,2,3,4],集合2:[3,4,5,6]

上面兩個集合取交集的結果是[3,4],CollectionUtils工具類提供了Collection<O> intersection(final Iterable<? extends O> a, final Iterable<? extends O> b)靜態方法來取交集,參數傳兩個集合,可以是list,也可以是set,甚至一個list,一個set;

上面兩個集合取並集的結果是[1,2,3,4,5,6],CollectionUtils工具類提供了Collection<O> union(final Iterable<? extends O> a, final Iterable<? extends O> b) ,參數同取交集類似;

CollectionUtils工具類也提供了取差集的靜態方法Collection<O> disjunction(final Iterable<? extends O> a, final Iterable<? extends O> b),如果操作上面兩個集合的話(第一個集合減去第二個集合),結果是[1,2,5,6],這個效果其實是兩個集合的並集減去這兩個集合的交集。但是實際開發中,我們可能更想要得到[1,2],CollectionUtils工具類並沒有提供能直接達到這種效果的方法,不過我們可以通過兩個方法的合作來達到這種效果,即用第一個集合減去這兩個集合的交集:

public static void main(String[] args) { 
    List<Integer> list1 = new ArrayList<Integer>(); 
    list1.add(1); 
    list1.add(2); 
    list1.add(3); 
    list1.add(4); 
   
    List<Integer> list2 = new ArrayList<Integer>(); 
    list2.add(3); 
    list2.add(4); 
    list2.add(
5); list2.add(6); // 取交集[3, 4] Collection<Integer> interColl = CollectionUtils.intersection(list1, list2); System.out.println(interColl);// 打印出[3, 4] // 取並集[1, 2, 3, 4, 5, 6] Collection<Integer> unionColl = CollectionUtils.union(list1, list2); System.out.println(unionColl);// 打印出[1, 2, 3, 4, 5, 6] // 取差集[1,2] Collection<Integer> disColl = CollectionUtils.disjunction(list1, interColl); System.out.println(disColl);// 打印出[1, 2] }

集合工具類CollectionUtils、ListUtils、SetUtils、MapUtils的使用