ava使用stream流将Map集合中name属性和age属性组合成一个新的map集合
时间: 2024-03-02 20:48:28 浏览: 169
Java Map 在put值时value值不被覆盖的解决办法
可以使用Java 8中提供的Stream API来实现将Map集合中的name属性和age属性组合成一个新的Map集合,代码如下:
```java
Map<String, Integer> ageMap = new HashMap<>();
ageMap.put("Tom", 20);
ageMap.put("Jane", 25);
ageMap.put("John", 30);
Map<String, String> nameMap = new HashMap<>();
nameMap.put("Tom", "Tommy");
nameMap.put("Jane", "Janey");
nameMap.put("John", "Johnny");
Map<String, String> result = ageMap.entrySet().stream()
.collect(Collectors.toMap(
entry -> nameMap.get(entry.getKey()),
entry -> entry.getValue().toString()
));
System.out.println(result);
```
运行结果为:
```
{Tommy=20, Janey=25, Johnny=30}
```
在这个例子中,我们将两个Map集合分别存储了人名和年龄信息。使用Stream API中的`entrySet()`方法将Map集合转换为Stream流,然后使用`collect()`方法将流转换为新的Map集合。在`collect()`方法中,我们使用了`Collectors.toMap()`方法来指定新Map集合中的key和value的生成方式。具体来说,我们使用了`nameMap.get(entry.getKey())`来生成新Map中的key,即将原Map中的人名替换为对应的昵称;使用`entry.getValue().toString()`来生成新Map中的value,即将原Map中的年龄转换为字符串形式。最后,我们将新Map集合输出到控制台。
阅读全文