猿问

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

我正在使用 Java 8 功能比较 2 个地图,并根据条件想要返回结果。使用.forEach显示编译时错误,基本上,返回是从 Lambda 表达式而不是从循环返回。如何从包含 lambda 的循环返回?

请注意,我不是在比较两个地图对象的相等性


nMap.forEach((k,v) -> {

    if (!mMap.containsKey(k) || mMap.get(k) < v) {

        return -1;

    }

});


慕田峪9158850
浏览 185回答 2
2回答

白猪掌柜的

使用Stream的entrySet()和anyMatch,而不是forEach:boolean found =&nbsp;&nbsp; &nbsp; nMap.entrySet()&nbsp; &nbsp; &nbsp; &nbsp; .stream()&nbsp; &nbsp; &nbsp; &nbsp; .anyMatch(e -> !mMap.containsKey(e.getKey()) || mMap.get(e.getKey()) < e.getValue());if (found)&nbsp; &nbsp; return -1;

斯蒂芬大帝

另一种使用 a 的方法Stream根据给定的条件过滤条目。流式传输的结果是一个Optional可能包含一个 found Entry:if (nMap.entrySet().stream()&nbsp; &nbsp; &nbsp; &nbsp; .filter(e -> !mMap.containsKey(e.getKey()) || mMap.get(e.getKey()) < e.getValue())&nbsp; &nbsp; &nbsp; &nbsp; .findAny()&nbsp; &nbsp; &nbsp; &nbsp; .isPresent()) {&nbsp; &nbsp; return -1;}
随时随地看视频慕课网APP

相关分类

Java
我要回答