在检查元素之前,HashSet的containsAll()是否会对集合大小进行比较?

LaR*_*RRy 0 java

是否HashSetcontainsAll()检查元素之前使集合大小的比较呢?

ars*_*jii 5

HashSet扩展AbstractSet,然后扩展AbstractCollection(定义containsAll方法).你可以在AbstractCollection 这里找到这里的来源.你会发现containsAll(第292行)实现为:

public boolean containsAll(Collection<?> c) {
    Iterator<?> e = c.iterator();
    while (e.hasNext())
        if (!contains(e.next()))
            return false;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

所以不,没有比较收集大小.