如何计算两个集合的交集?

2022-08-31 05:29:06

可能的重复:
有效地查找可变数量的字符串集的交集

比如说,有两个哈希集,如何计算它们的交集?

Set<String> s1 = new HashSet<String>();

Set<String> s2 = new HashSet<String>();

S1 INT S2 ?

答案 1

使用 set 的 retainAll() 方法

Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets

如果要保留集合,请创建一个新集合来保存交集:

Set<String> intersection = new HashSet<String>(s1); // use the copy constructor
intersection.retainAll(s2);

javadoc 说它正是你想要的:retainAll()

仅保留此集合中包含在指定集合中的元素(可选操作)。换句话说,从此集合中删除其指定集合中未包含的所有元素。如果指定的集合也是一个集合,则此操作将有效地修改此集合,使其值是两个集合的交集


答案 2

是的,有检查这个retainAll

Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);