Appearance
求出两个集合的 交集、并集、差集、补集
java
Set<Integer> set1 = Arrays.asList(1,2,3,4,5,6).stream().collect(Collectors.toSet());
Set<Integer> set2 = Arrays.asList(3,4,5,6,7,8,9).stream().collect(Collectors.toSet());
// 求交集
Set<Integer> intersection = new HashSet<>(set1);
intersection.retainAll(set2);
System.out.println("交集: " + intersection);
// 求并集
Set<Integer> union = new HashSet<>(set1);
union.addAll(set2);
System.out.println("并集: " + union);
// 求差集
Set<Integer> difference = new HashSet<>(set1);
difference.removeAll(set2);
System.out.println("差集: " + difference);
// 求补集
Set<Integer> complement = new HashSet<>(set1);
complement.addAll(set2);
Set<Integer> temp = new HashSet<>(set1);
temp.retainAll(set2);
complement.removeAll(temp);
System.out.println("补集: " + complement);
1、commons-collections
xml
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
java
//1 并集all org.apache.commons.collections.CollectionUtils
Collection union = CollectionUtils.union(set1, set2);
log.info("并集:{}",union);
//2 交集
Collection intersection = CollectionUtils.intersection(set1, set2);
log.info("交集:{}",intersection);
//3 交集后的补集
Collection disjunction = CollectionUtils.disjunction(set1, set2);
log.info("交集后的补集:{}",disjunction);
//4 差集
Collection subtract1 = CollectionUtils.subtract(set1, set2);
log.info("差集1:{}",subtract1);
Collection subtract2 = CollectionUtils.subtract(set2, set1);
log.info("差集2:{}",subtract2);
2、guava
java
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.1-jre</version>
</dependency>
java
//com.google.common.collect.Sets;
Set<Integer> set1 = Sets.newHashSet(1,2,3,4,5,6);
Set<Integer> set2 = Sets.newHashSet(3,4,5,6,7,8,9);
Sets.SetView<Integer> union = Sets.union(set1, set2);
log.info("Guava并集:{}",union);
Sets.SetView<Integer> intersection = Sets.intersection(set1, set2);
log.info("Guava交集:{}",intersection);
Sets.SetView<Integer> symmetricDifference = Sets.symmetricDifference(set1, set2);
log.info("Guava交集的补集:{}",symmetricDifference);
Sets.SetView<Integer> difference = Sets.difference(set1, set2);
log.info("Guava差集:{}",difference);