从理论上讲,通过将已删除的引用设置为null,LinkedList可以让您轻松地在恒定时间内轻松删除列表的尾部。
实际上,Java的LinkedList如何让您做到这一点?
例如:
Iterator<Integer> iterator = linkedList.iterator();
while (iterator.hasNext()) {
if (iterator.next() % 2 == 0) {
iterator.removeAllAfterThisPoint(); // how can we do this?
}
}
答案 0 :(得分:0)
如果我理解您的问题,则您正在尝试从第一个偶数之后的LinkedList
中删除所有元素。我的解决方案是获取出现偶数的索引,并使用subList(fromIndex, toIndex)
删除toIndex
之后的所有元素。
public static void main(String[] args) {
List<Integer> list = new LinkedList<>(Arrays.asList(3, 7, 9, 2, 4, 5, 17));
ListIterator<Integer> iterator = list.listIterator();
int toIndex = 0;
while (iterator.hasNext()) {
if (iterator.next() % 2 == 0) {
toIndex = iterator.nextIndex();
break;
}
}
list = list.subList(0, toIndex);
list.forEach(System.out::println);
}
输入:
3
7
9
2
4
5
17
输出:
3
7
9
2