gpt4 book ai didi

java - 如何从 ListIterator 中删除所有元素然后添加新元素

转载 作者:行者123 更新时间:2023-12-01 18:47:19 31 4
gpt4 key购买 nike

如何从 ListIterator 中删除所有元素,然后添加新元素。我在最后一行添加到迭代器时遇到 ConcurrentModificationException

public static void doAction(List<String> list) {
for (ListIterator<String> iterator = list.listIterator(); iterator.hasNext(); ) {
String s1 = iterator.next();
if(s1.equals("XYZ")){
while(iterator.hasNext()) {
iterator.next();
iterator.remove();
}
list.add("123");
list.add("456");
list.add("789");
list.forEach(iterator::add);
}
}
}

最佳答案

您收到异常的原因是您在迭代列表时尝试添加到列表中。 List#forEach 将很快失败,并且仍然会在迭代过程中对底层列表进行结构修改时抛出 ConcurrentModificationException (即在您的情况下, iterator::add Action )。

现在,为了实现您想要实现的目的,您的方法可以像这样重写和修改:

public static void doAction(List<String> list) {
if (list.contains("XYZ")) {
list.clear();
list.add("123");
list.add("456");
list.add("789");
}
}

这更加简单且易于遵循。您只需检查您要查找的值是否存在于给定列表中,然后只需调用 List#clear 即可清空传入的值。然后您将添加新元素,然后就可以开始了。

关于java - 如何从 ListIterator 中删除所有元素然后添加新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59803578/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com