java - 针对 remove(int index) 优化的 List 实现

标签 java list time-complexity

我想使用 List<E>但我将要使用的唯一方法是

E remove(int index)

我对这个方法的返回值感兴趣(删除了E)。我从不需要方法 remove(E e) .

我唯一需要的构造函数是采用 Collection<? extends E> 的构造函数.

如果List是一个 ArrayList , remove(int index)方法的时间复杂度为 O(n),因为您必须将移除元素之后的元素向左移动一位。

如果ListLinkedList , remove(int index)方法的时间复杂度也为 O(n),因为尽管更改元素处的链接需要 O(1) 时间,但您必须在索引 index 处找到该元素。通过遍历 List .

如果我只对使用 remove(int index) 感兴趣方法,是否可以编写 List<E> 的实现?它针对此方法进行了优化,因此 remove(int index)方法的时间复杂度优于 O(n)?

最佳答案

我建议使用 TreeList来自 apache 的 commons-collections。

它是这样优化的

This list implementation utilises a tree structure internally to ensure that all insertions and removals are O(log n).

关于java - 针对 remove(int index) 优化的 List 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28842102/

相关文章:

Java连接以构建字符串或格式

python - 如何使用元组列表中的元组中的值作为函数的参数?

python - 尝试将日期列表放入 date.year、date.month、date.day 中进行比较?

java - 创建一个很长的字符串并克服运行时间

algorithm - 支持快速下一个高元素和下一个低元素的数据结构是什么?

java - JUnit中如何选择特定的数据提供者?

java - 如果 Linux 命令包含特殊符号,则无法使用 java

c++ - 减少寻找 N 线交点所花费的时间

java - 我在安装 Movilizer eclipse 插件时遇到问题

python - 通过正则表达式修改字符串列表