我需要一个类似下面的函数,
boolean hasDuplicateValue(HashSet hs1, HashSet hs2) {
// return false;
}
这个线程有效地找到可变数量的字符串集的交集讨论了一个类似的问题,但是在这个线程中,他们还需要我不需要的交集值。因此,它可能会增加我不需要的额外计算复杂性。
我需要一个类似下面的函数,
boolean hasDuplicateValue(HashSet hs1, HashSet hs2) {
// return false;
}
这个线程有效地找到可变数量的字符串集的交集讨论了一个类似的问题,但是在这个线程中,他们还需要我不需要的交集值。因此,它可能会增加我不需要的额外计算复杂性。
我不确定,但你在谈论这样的事情吗?
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;
}
该类java.util.Collections
为此提供了有用的方法:
boolean hasDuplicateValue(HashSet hs1, HashSet hs2) {
return !Collections.disjoint(hs1,hs2);
}
看看提供包含 intersect 方法的Sets的guava-libraries 。另一方面,此方法需要两个 Set,而不是它们的实现。
要完成 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;
}