【问题标题】:Time Complexity of remove method of SetSet的remove方法的时间复杂度
【发布时间】:2020-06-12 10:34:49
【问题描述】:

Java 中 Set 的 remove 方法的时间复杂度是多少?我知道在 ArrayList 中 remove 方法的时间复杂度是 O(n),但想确认 Sets 也一样吗?

【问题讨论】:

  • 发帖前你搜索了吗?
  • 你可以从第一个谷歌搜索结果中得到答案。

标签: java collections set


【解决方案1】:

根据基础实现,List / Set 中的删除可以是O(1)O(n)O(log n)(或其他一些更复杂的深奥实现)。

ArrayList remove 是 O(n) 除了最后一个元素。删除ArrayList 中的最后一个元素是O(1)(递减大小计数器并将元素设置为null)。

现在您询问的是一个接口 (Set),它至少有两个实现 (TreeSetHashSet),它们都提供了不同的删除时间复杂度,就像 LinkedList 中的情况一样列表案例(例如,O(1) 去除了头部)。

set 接口不保证移除的上限,但任何健全的 set 实现最糟糕的是 O(log n) 我想 :)

【讨论】:

    猜你喜欢
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多