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

如何在List<Map<String, Object>>中仅遍历每个Map的money值

解决仅遍历Map中money值的问题

嘿,我来帮你搞定这个需求!首先咱们先梳理下你现有代码里的问题:你的嵌套循环逻辑走偏啦,finalMap没有初始化,other.contains(...)的判断完全不对(因为other是存Map的List,根本不会包含数字),而且putAll(child)会把整个Map的键值对都放进去,完全不符合你只取money的要求。

正确的实现方式

你要的是遍历每个Map里的money值,其实不用复杂的嵌套循环,直接通过键"money"取值就好,下面给你几种常用的实现:

方式一:普通增强for循环(适用于所有Java版本)

如果需要把所有money值收集起来,或者直接遍历处理,可以这么写:

// 初始化集合存储money值,类型根据实际情况调整(比如BigDecimal/Integer)
List<Integer> moneyValues = new ArrayList<>();

for (Map<String, Object> map : other) {
    // 先判断Map是否包含"money"键,避免空指针或类型转换错误
    if (map.containsKey("money")) {
        // 转换为对应类型,这里假设是Integer,实际可改为BigDecimal
        Integer money = (Integer) map.get("money");
        moneyValues.add(money);
        // 如果不需要收集,直接在这里处理money即可,比如打印
        // System.out.println("当前money值:" + money);
    }
}

// 后续可使用收集到的moneyValues
for (Integer money : moneyValues) {
    System.out.println(money);
}

方式二:Java 8+ Stream API(更简洁)

如果你的项目用的是Java 8及以上,用流处理会更清爽:

import java.util.stream.Collectors;

// 一行代码收集所有money值
List<Integer> moneyValues = other.stream()
        // 过滤掉没有"money"键的Map,可选步骤
        .filter(map -> map.containsKey("money"))
        // 获取"money"的值并转换类型
        .map(map -> (Integer) map.get("money"))
        .collect(Collectors.toList());

// 遍历输出
moneyValues.forEach(System.out::println);

补充说明

  • 注意类型转换:如果你的money实际是BigDecimal类型,就把转换代码改成(BigDecimal) map.get("money"),避免类型转换异常。
  • 如果不需要收集值,只是要遍历处理每个money,可以直接在循环里操作,不用存到集合里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:58:11