目录
1.背景描述
使用forEach循环遍历HashMap集合,并重新赋值了循环外的 ArrayList集合时,出现了编译报错,如下:
(下面是写的一个小demo,复现一下当时情景)
翻译:lambda表达式中使用的变量应该是final或者有效的final
2.异常原因:
因为forEach循环有用到lambda表达式,而lambda 表达式不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误;
具体原因可以参考这篇文章: http://t.csdnimg.cn/lGop2
3.解决方案:
使用 entrySet() 方法 遍历;
for (Map.Entry<String, List<User>> entry : map.entrySet()) {
String key = entry.getKey();
List<User> value = entry.getValue();
if ("006".equals(key)){
userList = value;
}
System.out.println(userList);
}