【发布时间】:2018-09-08 16:47:16
【问题描述】:
从理论上讲,LinkedList 允许您在恒定时间内轻松删除列表的尾部,只需将删除的引用设置为 null。
在实践中,Java 的 LinkedList 是如何让你做到这一点的?
例如:
Iterator<Integer> iterator = linkedList.iterator();
while (iterator.hasNext()) {
if (iterator.next() % 2 == 0) {
iterator.removeAllAfterThisPoint(); // how can we do this?
}
}
【问题讨论】:
-
首先,您发布的示例是错误的。
someList.iterator()返回一个Iterator<E>,假设列表包含整数,您的情况将是Iterator<Integer>。你的问题也不是很清楚。您想基本上删除之后的所有元素? -
在恒定时间的任何点之后删除所有元素,就像链表可以让你做的那样。例如对于像 1 -> 2 -> 3 -> 4 这样的列表,您只需将 2 上的
next引用设置为 null 即可从列表中删除 3 -> 4。 -
坦率地说:API不允许让你这样做。不支持您想要的方式。
标签: java data-structures linked-list