要使用這個工具類,我們要在maven工程當中加入相應的依賴:
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>
今天來總結下這些工具類。
主要用它的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工具類,里面也有好多使用的靜態方法