Java stream 数组转map带数据类型转换
时间: 2025-06-06 13:55:22 浏览: 11
### 将Java数组通过Stream API转换为Map并进行数据类型转换
为了实现从数组到`Map`的转换,并在此过程中执行数据类型的转换,可以利用Java 8引入的强大流(Stream)API。此方法不仅简化了集合操作还提供了更简洁的语法来处理复杂的数据结构。
下面是一个具体的例子,展示如何将字符串形式表示的人名和年龄组成的二维数组转化为一个映射(Map),其中键为人名(String), 值被解析成整数(Integer)代表年龄:
```java
import java.util.*;
import java.util.stream.*;
public class ArrayToMapExample {
public static void main(String[] args) {
String[][] peopleArray = {{"Alice", "23"}, {"Bob", "30"}, {"Charlie", "29"}};
Map<String, Integer> result =
Arrays.stream(peopleArray)
.collect(Collectors.toMap(
pair -> pair[0], // key mapper
pair -> Integer.parseInt(pair[1]) // value mapper with type conversion
));
System.out.println(result);
}
}
```
这段代码首先创建了一个包含姓名和对应年龄作为字符串的二维数组。接着使用`Arrays.stream()`函数将其转换为流对象;之后调用了`Collectors.toMap()`收集器指定两个参数:一个是用于生成键的方法引用(这里直接取每一对中的第一个元素),另一个是用来计算值的方法引用,在这个案例里是从字符串转成了整型数值[^2]。
#### 处理重复键的情况
当存在可能的重复键时,可以通过向`toMap`提供第三个参数——解决冲突的方式来进行处理。例如,如果想要保留最后遇到的那个条目,则可如下修改上述程序片段:
```java
.collect(Collectors.toMap(
pair -> pair[0],
pair -> Integer.parseInt(pair[1]),
(existing, replacement) -> replacement)); // conflict resolver: keep the latest one.
```
这样就能够在遇到相同键的情况下自动选择后者覆盖前者。
阅读全文
相关推荐


