问题背景:今天开发时需要一个功能,需要根据map的value 找出与之对应的key。这时候我想到了 lambda 表达式。
问题:lambda 表达式中 无法使用break;找到对应的不能手动结束循环。并且必须要是成员变量(final)
先来看代码:
Map<String, AccountConfig> supplyAccountMap = JSON.parseObject(WynConfig.getSupplyAccount(), new TypeReference<Map<String, AccountConfig>>() {
});
supplyAccountMap.forEach((k,v)->{
if(v.getSid().equals(sid)){
token = wynExtendsConfigService.getToken(true, k);
break;
}
});
可以看到,编译不通过。
寻找解决方案
见代码:
for(Map.Entry<String, AccountConfig> entry : supplyAccountMap.entrySet()){
if(entry.getValue().getSid().equals(sid)){
token = wynExtendsConfigService.getToken(true, entry.getKey());
break;
}
}
至于在lambda表达式中为什么必须要成员修饰?如何手动结束循环。还是需要继续深入~
学而不思则罔,思而不学则怠。