我今天在一些编码中发现了containsAll()(一种List接口方法),它看起来很漂亮。有谁知道在性能/迭代方面要花多少钱?

documentation在这方面没有提供太多。

最佳答案

首先,迭代提供的集合的每个元素
然后迭代列表中的所有元素,并使用.equals(..)将当前元素与它们进行比较(注意:正如您在问题中所指定的,这是关于列表的。其他集合的行为有所不同)


因此它是O(n * m),其中n和m是两个集合的大小。

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

07-27 13:26