可能的重复: 有效地找到可变数量的字符串集的交集
比如说,有两个哈希集,如何计算它们的交点?
Set<String> s1 = new HashSet<String>();
Set<String> s2 = new HashSet<String>();
S1 INT S2 ?
可能的重复: 有效地找到可变数量的字符串集的交集
比如说,有两个哈希集,如何计算它们的交点?
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
如果你想保留集合,创建一个新的集合来保存交集:
Set<String> intersection = new HashSet<String>(s1); // use the copy constructor
intersection.retainAll(s2);
retainAll()的javadoc说这正是你想要的:
仅保留此集中包含在指定集合中的元素(可选操作)。换句话说,从该集合中删除未包含在指定集合中的所有元素。如果指定的集合也是一个集合,则此操作将有效地修改该集合,使其值为两个集合的交集。
其他回答
是的,有保留,大家看看这个
Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);
使用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);
retainAll()的javadoc说这正是你想要的:
仅保留此集中包含在指定集合中的元素(可选操作)。换句话说,从该集合中删除未包含在指定集合中的所有元素。如果指定的集合也是一个集合,则此操作将有效地修改该集合,使其值为两个集合的交集。