Java 集的并集或交集
2022-09-01 07:11:46
在Java中制作s的并集或交集的最简单方法是什么?我见过一些奇怪的解决方案来解决这个简单的问题(例如,手动迭代两个集合)。Set
在Java中制作s的并集或交集的最简单方法是什么?我见过一些奇怪的解决方案来解决这个简单的问题(例如,手动迭代两个集合)。Set
最简单的单行解决方案是这样的:
set1.addAll(set2); // Union
set1.retainAll(set2); // Intersection
上述解决方案是破坏性的,这意味着原始set1的内容是我的变化。
如果您不想接触现有设备组,请创建一个新系列:
var result = new HashSet<>(set1); // In Java 10 and above
Set<Integer> result = new HashSet<>(set1); // In Java < 10
result.addAll(set2); // Union
result.retainAll(set2); // Intersection
虽然番石榴肯定更整洁,而且非常标准,但这是一种仅使用标准Java进行联合和交叉的非破坏性方法
Set s1 = Set.of(1,2,3);
Set s2 = Set.of(3,4,5);
Set union = Stream.concat(s1.stream(),s2.stream()).collect(Collectors.toSet());
Set intersect = s1.stream().filter(s2::contains).collect(Collectors.toSet());