如何计算两组的交集?

时间:2012-01-16 15:23:40

标签: java set intersection hashset

  

可能重复:
  Efficiently finding the intersection of a variable number of sets of strings

说,有两个Hashset,如何计算它们的交集?

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

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

S1 INT S2 ?

2 个答案:

答案 0 :(得分:344)

使用retainAll()Set方法:

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

如果要保留集合,请创建 new 集以保存集合:

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

retainAll()的{​​{3}}表示它正是您想要的:

  

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

答案 1 :(得分:40)

retainAll结帐this

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