Java 8:迭代某些Map元素

时间:2018-07-19 14:45:45

标签: loops java-8 hashmap

我有一个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元素)

1 个答案:

答案 0 :(得分:3)

boolean isValid = aMap.keySet()
                .stream()
                .allMatch(key -> validate(key, paramRow.getRowMap().get(colName))

请注意,paramRow.getRowMap().get(colName)的作用是什么?您从哪里得到colName?也许您不必为每个键都重新计算