java代码如何对集合进行“交集、并集、补集”的操作呢?

乔欣 Java经验 发布时间:2023-02-17 20:46:38 阅读数:8498 1
下文笔者讲述使用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());
}

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202302/16766380635833.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者