龙空技术网

100个Java工具类之45:Set集合工具类Apache之SetUtils

一名小小程序员 1003

前言:

今天兄弟们对“java 线程安全的set”都比较重视,我们都想要学习一些“java 线程安全的set”的相关知识。那么小编在网摘上收集了一些有关“java 线程安全的set””的相关知识,希望各位老铁们能喜欢,我们一起来了解一下吧!

本文主要讲述:集合工具类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集合创建一个hashcode
Set<Integer> set = new HashSet<>(Arrays.asList(1, 2));int hashCode = SetUtils.hashCodeForSet(set);输出:3
三、定义Set元素定义规则
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元素按照规则进行转换
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并不会发生改变。

大家有没有工作中遇到的报错或难点问题,可以评论区分享一下。

标签: #java 线程安全的set