我需要一个类似以下的功能,
boolean hasDuplicateValue(HashSet hs1, HashSet hs2) {
// return false;
}
这个线程Efficiently finding the intersection of a variable number of sets of strings讨论了一个类似的问题,但是在这个线程中他们还需要交集值,这是我不需要的。因此,它可能会增加我不需要的额外计算复杂性。
答案 0 :(得分:4)
我不确定,但你在谈论这样的事情吗?
boolean hasDuplicateValue(HashSet hs1, HashSet hs2) {
// you can add some null pointer defence if necessary
if (hs2.size() == 0) {
return false;
}
for (Object obj : hs1) {
if (hs2.contains(obj)) {
return true;
}
}
return false;
}
答案 1 :(得分:4)
java.util.Collections
类为此提供了有用的方法:
boolean hasDuplicateValue(HashSet hs1, HashSet hs2) {
return !Collections.disjoint(hs1,hs2);
}
答案 2 :(得分:0)
查看提供包含intersect方法的guava-libraries的Sets。另一方面,此方法需要两个Set,而不是它们的实现。
答案 3 :(得分:0)
完成oleg.lukyrych的回答: 如果要删除警告,请在方法声明中: 在可能的情况下使用Set而不是HashSet是一个好习惯:
<T> boolean hasDuplicateValue(Set<T> hs1, Set<T> hs2) {
for (T obj : hs1) {
if (hs2.contains(obj)) {
return true;
}
}
return false;
}