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

如何获取Java嵌套HashMap的内层Integer类型键集合

原数据结构定义

private Map<LocalDate, HashMap<Integer, HashMap<Pair<Long, Long>, String>>> campusDatabase = new HashMap<>();

错误原因

原代码的collect方法参数不全,Stream的三参数collect需要依次传入集合构造器、元素累加逻辑、多集合合并逻辑,仅传入ArrayList::new无法完成元素收集。

正确实现代码

写法1(推荐,简洁易读)

需先导入java.util.stream.Collectors:

ArrayList<Integer> roomNumbers = this.campusDatabase.values().stream()
        .flatMap(innerMap -> innerMap.keySet().stream())
        .collect(Collectors.toCollection(ArrayList::new));

写法2(适配原有写法逻辑,补全collect参数)

ArrayList<Integer> roomNumbers = this.campusDatabase.values().stream()
        .flatMap(innerMap -> innerMap.keySet().stream())
        .collect(
            ArrayList::new,
            ArrayList::add,
            ArrayList::addAll
        );

简化写法(无需强类型为ArrayList,JDK16+支持)

List<Integer> roomNumbers = this.campusDatabase.values().stream()
        .flatMap(innerMap -> innerMap.keySet().stream())
        .toList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:24:03