我今天在一些编码中发现了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;
}