我正在尝试将从主方法传递的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;
}
答案 0 :(得分:2)
Iterator
后更改基础列表时, ConcurrentModificationException
会引发Iterator
(在ArrayList JavaDoc中搜索失败快速)。
/>尝试将Iterator
的创建移至Main.append
来电之后。
答案 1 :(得分:0)
创建迭代器以遍历集合,一旦创建它,它就会检查 每次使用时进行修改,如果修改,它会在尝试再次访问集合时抛出ConcurrentModificationException。 正如twinklehawk所说,你需要在完成追加后创建迭代器。