插入数据时遍历Java集合

在Java中,集合是一种非常常用的数据结构,用于存储和操作一组对象。常见的集合包括List、Set和Map等。在对集合进行遍历的过程中,有时需要在遍历的同时对集合进行数据插入操作。本文将介绍如何在Java集合进行遍历时插入数据,并给出相应的代码示例。

Java集合遍历和插入数据的问题

在Java中,我们通常使用for循环或者迭代器对集合进行遍历操作。然而,在遍历过程中插入数据会导致ConcurrentModificationException异常,这是因为在遍历的同时修改集合会破坏迭代器的内部状态,导致异常的抛出。

解决方法

为了解决在遍历时插入数据的问题,我们可以使用Iterator的add方法或者List的ListIterator进行数据的插入。这样可以避免ConcurrentModificationException异常的抛出。

下面我们给出一个示例来说明如何在遍历List时插入数据。

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class InsertDataWhileTraversing {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");

        ListIterator<String> iterator = list.listIterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
            if (element.equals("Banana")) {
                iterator.add("Pear");
            }
        }

        System.out.println(list);
    }
}

在上面的代码中,我们首先创建一个List对象并添加了几个元素。然后通过List的ListIterator进行遍历,当遍历到"Banana"时,使用iterator.add("Pear")方法插入了一个新元素"Pear"。最后输出了修改后的List内容。

流程图

flowchart TD
    Start --> InputData
    InputData --> TraverseData
    TraverseData --> InsertData
    InsertData --> OutputData
    OutputData --> End

代码解析

  • 在代码中,我们首先使用ListIterator对List进行遍历,而不是直接使用for循环。
  • 当遍历到需要插入数据的位置时,使用ListIterator的add方法进行数据的插入。
  • 最后输出修改后的List内容。

代码执行结果

执行上述代码,我们会得到如下输出结果:

Apple
Banana
Pear
Orange
[Apple, Banana, Pear, Orange]

从结果可以看出,成功在遍历List时插入了数据"Pear",并且保持了List的顺序。

总结

在Java集合遍历时插入数据是一个常见的需求,在处理这种情况时,我们可以使用ListIterator的add方法或者Iterator的add方法来实现数据的插入,避免出现ConcurrentModificationException异常。通过本文的介绍和示例代码,相信读者对在Java集合遍历时插入数据有了更清晰的认识。

希望本文对读者有所帮助,谢谢阅读!

参考

  • [Java ListIterator](
  • [Java Iterator](