本文主要講述:集合工具類Apache之
org.apache.commons.collections4.SetUtils
上文介紹了關于ListUtils的實例,本文我們對SetUtils的部分用法進行演示。
一、判斷兩Set集合是否相等
Set<Integer> set1 = new HashSet<>(Arrays.asList(1, 2));
Set<Integer> set2 = new HashSet<>(Arrays.asList(1, 3));
boolean flag = SetUtils.isEqualSet(set1, set2);
輸出:fasle
二、為Set集合創(chuàng)建一個hashcode
Set<Integer> set = new HashSet<>(Arrays.asList(1, 2));
int hashCode = SetUtils.hashCodeForSet(set);
輸出:3
三、定義Set元素定義規(guī)則
Set<String> set = SetUtils.predicatedSet(new HashSet<String>(), e -> e.length() >= 4);
set.add("123456");
輸出:[123456]
set.add("123");
輸出:IllegalArgumentException:
Cannot add Object '123' - Predicate 'com.cinc.crmzmj.utils.DateUtil$$Lambda$15/0x0000000800066c40@627551fb' rejected it
四、可接收Transformer,對set元素按照規(guī)則進行轉換
Set<Integer> set = SetUtils.transformedSet(new HashSet<Integer>(), num -> num + 1);
set.add(1);
輸出:[2]
五、獲取只讀Set
Set<Integer> set = new HashSet<>(Arrays.asList(1, 2));
set = SetUtils.unmodifiableSet(set);
set.add(3);
輸出:JAVA.lang.UnsupportedOperationException
六、獲取線程安全的Set
Set<Integer> set = new HashSet<>(Arrays.asList(1, 2));
set = SetUtils.synchronizedSet(set);
獲取只讀Set和獲取線程安全的Set時,返回的新Set才是只讀或線程安全的,原Set并不會發(fā)生改變。
大家有沒有工作中遇到的報錯或難點問題,可以評論區(qū)分享一下。