java-8 - 如何使用流将一维整数数组转换为映射
问题描述
我有一个整数数组,我想将其转换为地图。我试过使用下面的代码。
但是当我尝试使用Collectors.toMap()
以下格式时,它不允许映射数组。
代码1:它正在工作
int arr1[] = {-5, 15, 25, 71, 63};
Map<Integer, Integer> hm = new HashMap<Integer, Integer>();
IntStream.range(0, arr1.length).forEach(i -> hm.put(i, arr1[i]));
System.out.println(hm);
代码 2:它不工作
Map<Integer, Integer> hm1=IntStream.range(0, arr1.length).collect(Collectors.toMap(i->i,i->arr1[i]));
谁能解释一下如何使用该Collectors.toMap()
函数将数组转换为映射?
解决方案
我认为这里的问题IntStream
是生成原始整数流。尝试在流到达收集器之前对流进行装箱:
hm = IntStream.range(0, arr1.length).boxed().collect(Collectors.toMap(i->i,i->arr1[i]));
for (Map.Entry<Integer, Integer> entry : hm.entrySet()) {
System.out.println("(" + entry.getKey() + ", " + entry.getValue() + ")");
}
(0, -5)
(1, 15)
(2, 25)
(3, 71)
(4, 63)
演示
推荐阅读
- python - 没有名为安装工具的模块,但我已经安装了它。
- google-apps-script - 对象比较总是返回默认选择案例
- c# - 如何在 UWP 应用中将客户端证书用于 HTTPs 请求
- android - ImageView自定义高度基于TextView高度
- rest - REST API - 命名约定 - 返回对象集合,但仅返回这些项目的单个属性
- angular - 如何获取父节点及其属性?(角度材质树)
- intellij-idea - IntelliJ 控制台输出在一行上有多个 (source.java:line) 链接
- c# - 在 JavaScript 中接收 C# 枚举并通过 Ajax 将其传递给模型
- html - YouTube 缩略图显示为网站预览(在 LinkedIn)
- bash - 如何将“逃离地狱”传递给 docker run