You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 _

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:23:01