首页 > 解决方案 > Java 8,比较两张地图并返回结果

问题描述

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

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

标签: javalambdaforeachjava-8java-stream

解决方案


使用and代替: Stream_entrySet()anyMatchforEach

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

推荐阅读