gpt4 book ai didi

java - Java 中 ContainsAll 的成本是多少?

转载 作者:行者123 更新时间:2023-12-03 20:27:29 26 4
gpt4 key购买 nike

我在今天的一些编码过程中发现了 containsAll()(一个 List 接口(interface)方法),它看起来很漂亮。有谁知道这在性能/迭代方面的成本是多少?

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

最佳答案

使用来源,卢克 :)

编辑:正如 Bozho 指出的那样,您询问的是覆盖 Collection.containsAll()List.containsAll()。下面的漫谈主要与后者有关:

大多数 Collection 类将使用 implementation of containsAll from AbstractCollection ,它是这样的:

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

但不能保证某些实现会完全不同 - 这可能会导致更好或更差的运行时行为。

containsAll 的上述实现将至少为 O(n),其中 n 是您传递的 Collection 参数 中的项目数in, plus 无论 contains 花费多少时间:

  • 对于 HashSet/HashMap 这可能是 O(1)(最好的情况,没有冲突),所以 containsAll 的整体运行时间仍然是 O(n)
  • 对于 ArrayListcontains 将占用 O(m),其中 m 是列表中的项目数(不是参数),因此 的总时间>containsAll 将是 O(n*m)

关于java - Java 中 ContainsAll 的成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10199772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com