0

我很难理解以下错误。

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

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;}

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

A obj = new A();
Map<Double,Integer> temp = obj.get_friends(6);

好吧,这很好用。但是,当我取消注释 A 类中的以下行时:

friends.putAll(user_to_user.column(user));

我再次运行程序,它崩溃并抛出并发修改异常。需要注意的是,我正在创建表 user_to_user 如下:

private HashBasedTable<Double,Double,Integer> user_to_user;//
user_to_user = HashBasedTable.create();

更令人惊讶的是,当我交换我填充朋友的方式时,我的意思是:

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

然后一切都会正常工作。任何想法 ?

4

1 回答 1

0

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

一种可行的替代方法是在将其放入行之前复制user_to_user.column(user)到单独的中。Map

于 2013-07-10T22:57:06.683 回答