我是 Java 新手。我试图将 LinkedList 元素的迭代器存储在 Map 中,稍后将其删除:
Map<Integer, Iterator<Integer>> map = new HashMap<>();
LinkedList<Integer> list = new LinkedList<>();
list.addFirst(1);
map.put(1, list.iterator());
list.addFirst(2);
map.put(2, list.iterator());
Iterator<Integer> iter = map.get(1);
iter.next();
iter.remove(); // list is supposed to be [2]
然而,ConcurrentModificationException
发生。我认为只要在列表中添加“2”,“1”的迭代器就会过期,对吗?
在 C++ 中,list<int>::iterator
表示链表中节点的指针,每当新节点插入链表时,该指针保持不变且可用。我在Java中对此有点困惑。
对困惑感到抱歉。现在我知道这Iterator
通常用于迭代,而不是“定位”一个元素,这与 C++ 中的元素有点不同。
我实际上尝试保留链表中元素的引用,以便可以在O(1)而不是O(n)的复杂性中有效地访问元素。
是否有任何相关类型的 Collection 或 Util?DeLinkedList
或者,也许我必须自己实施DeLinkedNode
。提前致谢。