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

如何使用Java 8 Stream API将int原始数组转为索引为键、元素为值的Map

问题原因

你编写的代码报错是因为IntStream是Java针对基础类型int设计的专用流,它的collect方法参数规则和泛型Stream<T>不同,无法直接传入Collectors.toMap这类Collector实例,需要先将基础类型int装箱为包装类型Integer,转为Stream<Integer>后再执行收集操作。

正确实现代码

int[] nums = {1, 3, 5, 7, 9};
Map<Integer, Integer> indexValueMap = IntStream.range(0, nums.length)
        // 把基础类型int流转为包装类型Integer的泛型流
        .boxed()
        .collect(Collectors.toMap(
                index -> index, // 键为数组下标
                index -> nums[index] // 值为对应下标的数组元素
        ));

补充说明

因为数组下标天然唯一,不需要额外处理键冲突的逻辑,上述代码可以直接正常运行,最终生成的Map完全符合下标为键、元素为值的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:30:05