【发布时间】:2019-12-23 00:06:09
【问题描述】:
我的主要问题是 ListIterator 或 Iterator 类是否会减少从给定 LinkedList 中删除元素所需的时间,并且在添加元素时也可以这样说使用上述任何一个类的 LinkedList 相同。使用 LinkedList 类本身的内置函数有什么意义?当我们可以使用 ListIterator 函数获得更好的性能时,为什么还要通过 LinkedList 函数执行任何操作?
【问题讨论】:
-
因为您本身不想 (a) 创建一个迭代器,(b) 迭代到该项目; (c) 删除它。迭代器的
remve工作得更快,因为它忽略了一个重要部分:迭代到正确的节点。 -
以 LinkedList 函数中的 add(int index, E element) 本身为例。它必须从头本身开始遍历,然后转到正确的索引并将相应的对象放在那里。 ListIterator 也可以做同样的事情,对吗?那么基本的区别是什么? ListIterator有哪些不应该使用的地方?
-
好吧,要在索引 10 处添加一个元素,您只需要
list.add(10, element)。使用迭代器执行此操作需要创建一个迭代器,调用 next() 10 次,最后调用 add()。它的可读性要差得多,更容易出错,而且更冗长。而且速度并不快。你为什么要使用这样一个尴尬的解决方案而不是只使用 add()? -
@IcyFlamlex:因为它更方便,并且经过有效测试。自己用迭代器做逻辑,需要写更多的代码,而且可能不会考虑一些奇怪的情况(比如负索引等)
-
好的。清楚地理解了你的解释。
标签: java linked-list iterator time-complexity