java问题 ,想请教一下,谢谢

下面输出为什么 set1.equals(set2) 是true
2025-01-20 13:36:05
推荐回答(1个)
回答1:

HashSet 和 TreeSet 都是继承自AbstractSet,

这两个类都没有实现是equals方法,所以比较的时候回使用父类的方法。

下面是父类的方法。

public boolean equals(Object o) {
    if (o == this)
        return true;

    if (!(o instanceof Set))
        return false;
    Collection c = (Collection) o;
    if (c.size() != size())
        return false;
    try {
        return containsAll(c);
    } catch (ClassCastException unused)   {
        return false;
    } catch (NullPointerException unused) {
        return false;
    }
}

可以看到比较会调用containsAll() 方法。具体代码如下:

public boolean containsAll(Collection c) {
    for (Object e : c)
        if (!contains(e))
            return false;
    return true;
}

看到这就明白了,两个都是空,所以返回true.