map的循环删除操作

1.错误示例

Map<String,InterfaceOutParam> outCodes1 = outParamList.stream().collect(Collectors.toMap(InterfaceOutParam::getOutparamCode,a->a));
Map<String,InterfaceOutParam> outCodes2 = outParamList2.stream().collect(Collectors.toMap(InterfaceOutParam::getOutparamCode,a->a));
//统计修改的参数
for (String key : outCodes1.keySet()) {
if(outCodes2.containsKey(key)){
updateOutParamList.add(outCodes1.get(key));
outCodes1.remove(key);
continue;
}
}

抛出异常:

map的循环删除操作

2.使用 Iterator 遍历删除

for (Iterator<Map.Entry<String, InterfaceOutParam>> it = outCodes1.entrySet().iterator(); it.hasNext();){
Map.Entry<String, InterfaceOutParam> item = it.next();
if(outCodes2.containsKey(item.getKey())){
updateOutParamList.add(outCodes1.get(item.getKey()));
it.remove();
continue;
}
}
上一篇:什么是MIPI


下一篇:MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析