如何计算两个交集?
可能重复:
高效地find可变数量的string集合的交集
说有两个Hashset,它们如何计算?
Set<String> s1 = new HashSet<String>(); Set<String> s2 = new HashSet<String>(); S1 INT S2 ?
使用Set
的retainAll()
方法:
Set<String> s1; Set<String> s2; s1.retainAll(s2); // s1 now contains only elements in both sets
如果要保留这些集合,请创build一个新集合以保存交叉点:
Set<String> intersection = new HashSet<String>(s1); // use the copy constructor intersection.retainAll(s2);
retainAll()
的javadoc说这正是你想要的:
仅保留包含在指定集合中的元素(可选操作)。 换句话说,从这个集合中删除所有不包含在指定集合中的元素。 如果指定的集合也是集合,则此操作将有效地修改此集合,使其值为两个集合的交集 。
是的,有retainAll
检查了这一点
Set<Type> intersection = new HashSet<Type>(s1); intersection.retainAll(s2);