我有一个validate
方法,该方法返回一个boolean
。
我正在按以下方式调用此方法(Java 7):
boolean isValid = true;
for (String key: aMap.keySet()) {
isValid &= validate(key, aMap.get(key));
if(!isValid) {
break;
}
}
我想用Java 8重写此代码。
Java 8允许使用以下方法遍历Map:
aMap.forEach((k,v) -> validate(k, v));
但这不起作用:
aMap.forEach((k,v) -> isValid &= validate(k, v));
问题
如何将Java 7代码重写为Java 8以实现相同的结果?
注意
提出了类似的问题here(但这次,迭代将继续遍历所有Map
元素)
答案 0 :(得分:3)
boolean isValid = aMap.keySet()
.stream()
.allMatch(key -> validate(key, paramRow.getRowMap().get(colName))
请注意,paramRow.getRowMap().get(colName)
的作用是什么?您从哪里得到colName
?也许您不必为每个键都重新计算