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()); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。