java代码如何对集合进行“交集、并集、补集”的操作呢?
下文笔者讲述使用java代码对集合进行求“交集、并集、补集”的方法及示例分享,如下所示
交集、并集、补集的概念说明
交集:
元素同时属于集合A ,也属于B
我们这样的元素集合称之为“交集”
并集:
将集合A 和 集合B中的元素组成一个全新的集合
我们将这个操作方式称之为“并集操作”
这个集合称之为“并集”
补集:
补集分为:相对补集和绝对补集
绝对补集:
相对全集U,这些元素属于U但部署集合A,则这些元素称之为“绝对补集”
相对补集:
相对补集(差集)
若A 和B 是集合
则A 在B 中的相对补集是这样一个集合
其元素属于B但不属于A(B-A)
java代码求交集、并集、补集的方法
实现思路:
使用apache commons包中的collections下的工具类
即可实现交集、并集、补集的操作
交集:set1.retainAll(set2)
并集:set1.addAll(set2)
差集or补集:set1.removeAll(set2)
或
Google的guava实现交集、并集、补集的操作
注意事项:
Google guava的maven坐标
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>
例
Guava Sets操作
@Test
public void setOperation() {
Set<Integer> set1 = Sets.newHashSet(1, 2, 3, 4, 5);
Set<Integer> set2 = Sets.newHashSet(3, 4, 5, 6, 7, 9);
Sets.SetView<Integer> intersection = Sets.intersection(set1, set2);
LOGGER.info("交集为:{}", intersection.toString());//[3, 4, 5]
Sets.SetView<Integer> union = Sets.union(set1, set2);
LOGGER.info("并集为:{}", union.toString());//[1, 2, 3, 4, 5, 6, 7, 9]
Sets.SetView<Integer> diff = Sets.difference(set1, set2);
LOGGER.info("差集为:{}", diff.toString());//[1, 2]
set1.retainAll(set2);
LOGGER.info("jdk中求交集:{}", set1);
}
//Apache CollectionUtils操作集合的示例分享
@Test
public void CollectionUtilsOperation() {
Set<Integer> set1 = Sets.newHashSet(1, 2, 3, 4, 5);
Set<Integer> set2 = Sets.newHashSet(3, 4, 5, 6, 7, 9);
Collection<Integer> col = CollectionUtils.retainAll(set1, set2);
LOGGER.info("交集为:{}", col.toString());
col = CollectionUtils.union(set1, set2);
LOGGER.info("并集为:{}", col.toString());
col = CollectionUtils.subtract(set1, set2);
LOGGER.info("补集为:{}", col.toString());
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


