首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用putAll时的ConcurrentModificationException

调用putAll时的ConcurrentModificationException
EN

Stack Overflow用户
提问于 2013-07-11 06:39:00
回答 1查看 623关注 0票数 0

我很难理解下面的错误。

假设你有一个类A,我在其中实现了以下方法:

代码语言:javascript
运行
复制
Map<Double,Integer> get_friends(double user){

Map<Double,Integer> friends = user_to_user.row(user);
//friends.putAll(user_to_user.column(user));

return friends;}

然后,我主要执行以下操作:

代码语言:javascript
运行
复制
A obj = new A();
Map<Double,Integer> temp = obj.get_friends(6);

好的,这个可以正常工作。但是,当我取消注释A类中的以下行时:

代码语言:javascript
运行
复制
friends.putAll(user_to_user.column(user));

然后我再次运行这个程序,它崩溃了,并抛出了concurrentModificationException。需要注意的是,我正在创建表user_to_user,如下所示:

代码语言:javascript
运行
复制
private HashBasedTable<Double,Double,Integer> user_to_user;//
user_to_user = HashBasedTable.create();

更令人惊讶的是,当我交换我交友的方式时,我的意思是这样:

代码语言:javascript
运行
复制
Map<Double,Integer> friends = user_to_user.column(user);
friends.putAll(user_to_user.row(user));

那么一切都会好起来的。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 06:57:07

问题是HashBasedTable是作为Map<Double, Map<Double, Integer>>在内部实现的,并且user_to_user.column(user)的实现在您修改与user关联的行的同时迭代各行。

一种可行的替代方法是先将user_to_user.column(user)复制到单独的Map中,然后再将其放入行中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17582159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档