我有数据结构Map<Long,List<POJO>>
。我需要遍历地图,对于每个列表,我都需要向列表中添加元素。因此,举例来说,如果一个列表包含10个元素,则可能以12结尾。由于我不会明确更改每个列表的地址。我想有一个子问题,如果列表需要更大的连续块来保存其数组,列表是否会更改其地址。
最佳答案
您的两个问题的答案均为“否”:
如果您所做的全部就是更改地图的值,则不会有ConcurrentModificationException
,因为您实际上并未更改值本身,而只是更改了它们的状态。这很容易测试和确认。
如果您尝试添加的元素数量超出列表的容纳范围,则列表不会“更改其地址”。相反,将在内部分配更多空间。例如,对于ArrayList
,内部数组将被一个更大的新数组替换,并且元素将被复制。
关于java - 避免Map <Long,List <POJO >>的并发修改异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19387194/