我想使用List< E>但我唯一要使用的方法是
E remove(int index)
我对此方法的返回值感兴趣(E已删除).我从不需要删除方法(E e).
我唯一需要的构造函数是一个收集.
如果List是一个ArrayList,则remove(int index)方法的时间复杂度为O(n),因为您必须在删除的元素向左移动一个元素之后将元素混洗.
如果List是LinkedList,则remove(int index)方法也具有时间复杂度O(n),因为尽管在元素上更改链接需要O(1)时间,但您必须通过遍历名单.
如果我只对使用remove(int index)方法感兴趣,是否可以编写List< E>的实现.它是否针对此方法进行了优化,以便remove(int index)方法的时间复杂度优于O(n)?
解决方法:
我建议使用apache的commons-collections中的TreeList.
它被优化了
This list implementation utilises a tree structure internally to ensure that all insertions and removals are O(log n).
标签:java,time-complexity,list
来源: https://codeday.me/bug/20190623/1275282.html