java - 如何在迭代时在常数时间内修改 Java 链表中的元素?

标签 java data-structures linked-list

我正在尝试遍历 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)
}

最佳答案

Iterator 没有 set 方法。幸运的是,您使用的是 LinkedList,并且 ListIterator does have a set method .

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

关于java - 如何在迭代时在常数时间内修改 Java 链表中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65101613/

相关文章:

list - 什么是 DList?

mongodb - 为聊天应用程序设计 mongodb?

c - C语言如何将字符串插入到链表中?

go - 输出反向链表时出现无限循环

检查单向链表是否为回文 C

java - 如何在 Spring Boot 中使用 Java 通过更改 JSON 结构中的字段名称(如本例所示)从 JSON 响应中提取特定部分?

java - 如何在我的 JAR 中 bundle 含 native 库的库?

java - 如何替换java集合中的对象?

java - 除七月外,全年都可使用日历

java - 在不使用正则表达式的情况下在java中进行正则表达式匹配