在 Java 中使用迭代器时向 ArrayList 添加元素

Posted

技术标签:

【中文标题】在 Java 中使用迭代器时向 ArrayList 添加元素【英文标题】:Adding elements to ArrayList while using Iterator in Java 【发布时间】:2011-12-23 10:51:16 【问题描述】:

我在使用Iterator 时向ArrayList 添加元素时遇到问题。在下面的代码中,它给了我这个输出:

一种 ķ s

但它仍然错过了我通过迭代器添加的那个。即我的输出中缺少r。有没有办法可以使用IteratorArrayList 添加元素?

import java.util.ArrayList;
import java.util.ListIterator;
public class Test 

public static void main(String args[])

    ArrayList<String> array_test= new ArrayList<String>();
    array_test.add("a");
    array_test.add("k");
    array_test.add("d");
    array_test.add("s");
    array_test.remove("d");
    ListIterator<String> it=array_test.listIterator();
    while(it.hasNext())
       
        String link=it.next();  
        it.add("r");
        System.out.println(link);

       
    //System.out.println("Contents of arrays list "+array_test);




【问题讨论】:

你期望你的输出是什么? 【参考方案1】:

检查Javadoc。它按记录工作。在迭代期间添加元素不会通过迭代器返回该元素,除非您向后退。

【讨论】:

感谢您的重播。当我尝试使用迭代器时,我无法添加新元素。正如我所指定的,我试图在 while 循环中添加 r。这是行不通的。 -1:您至少应该引用文档中的相关部分。 它正在工作。您已注释掉的第二个打印语句应包含所有四个字母。 @BjörnPollex 我完全不同意。文档在那里可供阅读。规格或措辞可能会略有变化,这会使报价过时。这里的重点是 OP 根本不理解,甚至更可能根本没有阅读 Javadoc。 @j***over 您的评论与我的回答无关。如果您有自己的答案,我建议您发布它。【参考方案2】:

对不起,我的回复晚了。这是我解决此问题的方法。

for(ListIterator it=array_test.listIterator();it.hasNext();) 
 String link=it.next(); 
   it.add("r");
   it.previous();
   it.add("kk");
   it.previous();
System.out.println(link);  
 

【讨论】:

很高兴您在这三年后解决了这个问题!但这看起来不会终止。每次在循环中,你去掉一项并添加两项?

以上是关于在 Java 中使用迭代器时向 ArrayList 添加元素的主要内容,如果未能解决你的问题,请参考以下文章

java ArrayList迭代过程中删除

使用 ARM GCC 编译列表迭代器时的模板编译时错误

Java在其中使用HashMap迭代ArrayList

Java - 迭代 ArrayList 并查找 Anagrams

CopyOnWriteArrayList 使用入门及源码详解

CopyOnWriteArrayList 使用入门及源码详解