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

如何通过Java Stream根据InventoryItem名称获取对应amount值

解决方案

你需要在filter之后加上map操作,把InventoryItem对象转换为它的amount属性,同时处理可能没有匹配项的情况(避免空指针)。

完整代码示例

// 假设inventoryItems是你的List<InventoryItem>实例
Optional<Integer> matchedAmount = inventoryItems.stream()
    .filter(item -> item.getName().equals(name)) // 筛选名称匹配的物品
    .map(InventoryItem::getAmount) // 提取物品的amount值
    .findFirst(); // 获取第一个匹配结果(返回Optional,处理无匹配的情况)

如何使用结果

因为可能不存在名称匹配的物品,findFirst会返回Optional<Integer>,推荐用以下安全方式处理:

  • 设置默认值(无匹配时返回0):
    int amount = matchedAmount.orElse(0);
    
  • 仅当存在结果时执行逻辑:
    matchedAmount.ifPresent(amount -> {
        // 这里处理获取到的amount值,比如打印或业务逻辑
        System.out.println("匹配物品的数量:" + amount);
    });
    

额外提示

如果需要忽略名称的大小写匹配,可以把equals改成equalsIgnoreCase:

.filter(item -> item.getName().equalsIgnoreCase(name))

内容的提问来源于stack exchange,提问作者doc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:55:29