在ArrayList中添加/删除方法与设置方法

时间:2018-12-02 06:26:56

标签: java arraylist

在将foreach与ArrayList一起使用时,我知道使用add / remove方法将不起作用,因为它将引发并发修改异常,但是为什么我可以在同一foreach循环中使用set方法更改值?

这是示例代码:

SIGSTOP

如果我们要更改arr.add(),它将抛出一个错误,但设置成功后,这里的原因是什么?

2 个答案:

答案 0 :(得分:7)

根据docs,如果在创建迭代器后对该列表进行了结构修改,则会引发CME。由于userRef.once('value').then(function(snapshot) { //use snapshot to get the users data }); 仅替换现有元素,因此不会进行结构修改,也不会引发异常。

答案 1 :(得分:1)

实现方式有所不同。修改列表的长度时(add方法已完成),ArrayList返回的迭代器会引发ConcurrentModificationException,因为它会检查数组的长度。尽管set方法不会修改数组的长度,因此不会引发ConcurrentModificationException。