Java 8,比较两个映射并返回结果

Abh*_*agi 8 java foreach lambda java-8 java-stream

我正在使用Java 8功能比较2个地图,并根据条件想要返回结果.使用.forEach显示编译时错误,基本上,返回是从Lambda表达式返回而不是从循环返回.如何从包围lambda的循环返回?
请注意,我没有比较两个地图对象的相等性

nMap.forEach((k,v) -> {
    if (!mMap.containsKey(k) || mMap.get(k) < v) {
        return -1;
    }
});
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 8

使用StreamentrySet()anyMatch,而不是forEach:

boolean found = 
    nMap.entrySet()
        .stream()
        .anyMatch(e -> !mMap.containsKey(e.getKey()) || mMap.get(e.getKey()) < e.getValue());
if (found)
    return -1;
Run Code Online (Sandbox Code Playgroud)

  • @AbhinavTyagi在那种情况下,为什么在你的病情第一次真实时你回来-1?无论如何,如果要检查所有条目,请将anyMatch更改为allMatch (2认同)