如何在遍历java链表的同时以恒定时间修改链表中的元素?

7ivaypg9  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(329)

我尝试遍历java的链表实现,并在固定时间内修改链表的每个元素。我知道链表的set()方法,但是这个操作是o(n)。因此,如果我在循环中使用set()方法,它将是o(n^2),这不是我想要的。因为我正在遍历链表,所以我已经知道要修改其内容的节点的位置。有没有一种方法可以让我用java的链表在固定的时间内做到这一点?
我已经用定制实现做过很多次了,但是我没有找到一种在固定时间内做这件事的方法。我试着在下面迭代,但我遗漏了一些东西。

LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator iterator = list.iterator();

while (iterator.hasNext()) {
    iterator.remove();
    iterator.set(); // using set() wouldn't be O(1)
}
wqsoz72f

wqsoz72f1#

Iterator 没有一个 set 方法。幸运的是,你和一个 LinkedList ,和 ListIterator 有一个 set 方法。

ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
  it.set("new_" + it.next());
}

相关问题