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


之前用集合,接觸了CollectionUtils。

今天來總結下這些工具類。

主要用它的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工具類還有好多其他常用的靜態方法。除了CollectionUtils工具類外,還有ListUtils、SetUtils工具類,里面也有好多使用的靜態方法。然而CollectionUtils只能操作集合,從傳的參數是Iterable對象就可看出,但是Map接口並沒有繼承Iterable接口,那么如何操作Map對象呢?驚喜的發現竟然還有MapUtils,真是喜大普奔。總之,以后處理List、Set、Map時,如果要用公用方法,優先從這些工具類里去查,實在不行,再寫自己的工具方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM