找出两个HashSets是否具有重复值

时间:2013-09-30 08:23:41

标签: java hashset

我需要一个类似以下的功能,

boolean hasDuplicateValue(HashSet hs1, HashSet hs2) {        
    // return false;
}

这个线程Efficiently finding the intersection of a variable number of sets of strings讨论了一个类似的问题,但是在这个线程中他们还需要交集值,这是我不需要的。因此,它可能会增加我不需要的额外计算复杂性。

4 个答案:

答案 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-librariesSets。另一方面,此方法需要两个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;
}