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

如何用Stream在List<Map<String,Object>>中按Id查找并获取State属性

使用Java Stream实现按Id查找并获取State属性

直接通过Stream的过滤、映射和结果获取操作就能实现需求,核心代码如下:

// 查找Id为"4712"的元素并提取State属性
String targetState = test.stream()
    // 过滤出Id匹配的Map,用常量.equals()避免空指针
    .filter(map -> "4712".equals(map.get("Id")))
    // 将Map映射为State属性,强转为String类型
    .map(map -> (String) map.get("State"))
    // 获取第一个匹配结果(若Id唯一,这就是目标元素)
    .findFirst()
    // 无匹配时返回默认值,这里用null,可按需替换为"Unknown"等
    .orElse(null);

代码说明

  • stream():将List转换为Stream,开启流式处理
  • filter:筛选出Id键对应值为"4712"的Map对象,使用"4712".equals(map.get("Id"))可以避免当map.get("Id")为null时抛出空指针异常
  • map:将符合条件的Map转换为其State属性值,由于Map的值是Object类型,需要强转为String
  • findFirst:返回Optional<String>类型的结果,代表可能存在的匹配值
  • orElse:当没有找到匹配元素时,返回指定的默认值,你可以根据业务需求调整默认值(比如orElse("Not Found"))

增强健壮性的版本

如果需要处理State键不存在或类型不是String的情况,可以添加额外过滤:

String targetState = test.stream()
    .filter(map -> "4712".equals(map.get("Id")))
    // 确保State存在且为String类型
    .filter(map -> map.containsKey("State") && map.get("State") instanceof String)
    .map(map -> (String) map.get("State"))
    .findFirst()
    .orElse("Unknown");

内容的提问来源于stack exchange,提问作者Tom el Safadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:20:24