为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪9158850 2021-11-11 15:45:43
我正在使用 Java 8 功能比较 2 个地图,并根据条件想要返回结果。使用.forEach显示编译时错误,基本上,返回是从 Lambda 表达式而不是从循环返回。如何从包含 lambda 的循环返回?请注意,我不是在比较两个地图对象的相等性nMap.forEach((k,v) -> {    if (!mMap.containsKey(k) || mMap.get(k) < v) {        return -1;    }});
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

使用Stream的entrySet()和anyMatch,而不是forEach:


boolean found = 

    nMap.entrySet()

        .stream()

        .anyMatch(e -> !mMap.containsKey(e.getKey()) || mMap.get(e.getKey()) < e.getValue());

if (found)

    return -1;


查看完整回答
反对 回复 2021-11-11
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

另一种使用 a 的方法Stream根据给定的条件过滤条目。流式传输的结果是一个Optional可能包含一个 found Entry:


if (nMap.entrySet().stream()

        .filter(e -> !mMap.containsKey(e.getKey()) || mMap.get(e.getKey()) < e.getValue())

        .findAny()

        .isPresent()) {

    return -1;

}


查看完整回答
反对 回复 2021-11-11
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信