Java Stream.filter()无法识别Lambda表达式中局部变量的问题咨询
Java Stream.filter()无法识别Lambda表达式中局部变量的问题咨询
大家好,我现在碰到一个Java Stream相关的问题,想请教下各位同行:
我想要统计某款特定产品在所有仓库里的总数量,每个仓库都维护着一份产品列表。我按照自己的思路写了一段代码,但发现.filter方法里Lambda表达式中的局部变量p无法被识别(IDE里标红提示找不到这个变量)。
我的实现逻辑是这样的:
- 先用
.map把仓库流转换成每个仓库对应的产品列表流 - 再通过
.flatMap把列表流扁平化,得到单个产品的流 - 最后用
.filter匹配传入的目标产品,再统计匹配到的数量
具体代码如下:
public long getQuantityOfProduct(Product product) { return warehouses.stream() .map(Warehouse::getProducts) .flatMap(Collection::stream) .filter(p -> p.equals(product)) .count(); }
有没有大佬能帮我看看问题出在哪?为什么filter里的p会识别不了呢?
备注:内容来源于stack exchange,提问作者Thilo _
相关产品推荐
相关产品推荐

