list - 如何在没有“并发修改”异常的情况下将所有列表项添加到另一个列表的每个项目
问题描述
我正在尝试将项目列表添加到另一个项目列表中。两个列表属于不同类型。这些项目是 2 个不同类(字符串、组)的实例。其中 Group 包含字符串(成员)列表和将成员添加到组的方法。这是代码...
void main(){
void addMembersToGroups(List<String> members, List<Group> groups){
groups.forEach((group){
group.addMembers(members);
});
}
var _members=['a','b'];
var _groupsA=[Group()..addMembers(_members),Group()];
var _groupsB=[Group(members:_members),Group()];
//this function works fine
addMembersToGroups(_members,_groupsA);
//this function does not
//Throws Unhandled exception:
//Concurrent modification during iteration: Instance(length:2) of '_GrowableList'
addMembersToGroups(_members,_groupsB);
}
和 Group 类
class Group{
List<String> members;
Group({this.members}){members??=[];}
void addMembers(List<String> mems) {
members.addAll(mems);
}
}
问题可能出在 _groupB 变量中,其中 Group 使用成员字段进行了初始化。引发未处理的异常:迭代期间的并发修改:“_GrowableList”的实例(长度:2)
稍微解释一下会很有帮助。谢谢你。
解决方案
推荐阅读
- gradle - 在 settings.gradle 中访问存储在 gradle.properties 中的点属性
- c# - 如何为不相关的实体构建一个 IQueryable 实体图,而无需逐个构建每个实体的属性
- tensorflow2.0 - 如何在 tf.keras.Model 中禁用例如 Dropout 以使用迁移学习生成激活最大化图像
- reactjs - 如何将自定义组件添加到 Ant Design 步进器中?
- pyspark - 遍历 Pyspark 数据框的列并根据条件填充新列
- python-3.x - Spyder:启动内核时发生错误
- kubernetes - 如何使用 prometheusOperator.admissionWebhooks.enabled=false 在 GKE 上安装 helm chart prometheus-operator?
- android - GraphQl 找不到符号 mashaller()
- git - 即使在 Jenkins 构建上禁用了浅层,SonarQube 也会发出浅层克隆警告
- vim - VIM:如何在不更改列的情况下将光标向下移动到块中的最后一行文本?