java.util.ConcurrentModificationException出现在程序中

java.util.ConcurrentModificationException occurs in the program

我正在尝试将从 main 方法传递的 List<Integer> data 中的有限数量的元素复制到另一个 List<Integer> remainder 中。当我一步步调试程序和运行代码行时,没有错误。但是当我尝试 运行 代码时,我通常会得到 ConcurrentModificationError。我看过其他 SO 线程,但我无法解决它。

public static List<Integer> calculate_remainder(List<Integer> data, int[] polynomial, List<Integer> append)
{
    List<Integer> remainder = new ArrayList<>();
    List<Integer> temp = new ArrayList<>();
    Iterator<Integer> data_iterator = data.iterator();

    data = Main.append(data, append);

    for (int i = 0; i < polynomial.length; i++)
    {
        if (data_iterator.hasNext())
        {
            remainder.add(data_iterator.next());
        }
    }

更新 1:

public static List<Integer> append(List<Integer> data, List<Integer> append)
{
    data.addAll(append);
    return data;
}

Iterator 在创建 Iterator 后更改基础列表时抛出 ConcurrentModificationException(在 ArrayList JavaDoc 中搜索 fail-fast)。

尝试将 Iterator 的创建移动到 Main.append 调用之后。

创建迭代器是为了遍历一个集合,一旦创建,它就会检查 每次使用它时都会修改,如果修改,它会在尝试再次访问集合时抛出 ConcurrentModificationException。 正如 twinklehawk 所说,您需要在完成附加后创建迭代器..