stream流将集合中String元素A和String元素B转成map,分别作为key和value,如果key重复则覆盖value值怎么写
时间: 2024-03-15 09:41:43 浏览: 15
可以使用`Collectors.toMap`方法来实现将集合中的`String`元素A和`String`元素B转成`Map`,其中`String`元素A作为`key`,`String`元素B作为`value`,如果`key`重复则覆盖`value`值。具体实现可以参考以下代码示例:
```
List<String> list = Arrays.asList("apple:1", "banana:2", "cherry:3", "apple:4", "cherry:5");
Map<String, String> map = list.stream()
.map(s -> s.split(":"))
.collect(Collectors.toMap(arr -> arr[0], arr -> arr[1], (v1, v2) -> v2));
System.out.println(map);
```
这段代码的作用是将列表中的字符串转成`Map`,使用`map`方法将每个字符串按照`:`分割成数组,然后使用`Collectors.toMap`方法将数组的第一个元素作为`key`,第二个元素作为`value`,如果有重复的`key`则使用合并函数将`value`覆盖。输出结果为:
```
{banana=2, cherry=5, apple=4}
```
这里使用了`Collectors.toMap`方法的重载版本,第一个参数是`key`的映射函数,第二个参数是`value`的映射函数,第三个参数是合并函数,将重复的`key`的`value`覆盖。
相关问题
使用stream流将List<String> 转成Map,key是List里面的元素。value是常量值222
可以使用 Java 8 中的流(Stream)来将 List<String> 转成 Map,其中 key 是 List 中的元素,value 是常量值 222。具体实现代码如下:
```java
List<String> list = Arrays.asList("key1", "key2", "key3");
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(s -> s, s -> 222));
System.out.println(map);
```
上述代码中,使用 toMap() 方法将 List 中的每个元素转成 Map 的 key,将常量值 222 转成 Map 的 value。其中,toMap() 方法的第一个参数表示 Map 的 key,第二个参数表示 Map 的 value。
输出结果为:
```
{key1=222, key2=222, key3=222}
```
java stream流 将 List<Map<String, Object>>转换成 map的key=“code”的List集合
可以通过 Java 8 中的 Stream API 来实现将 `List<Map<String, Object>>` 转换成 `Map` 的 key 为 "code" 的 `List` 集合。
具体实现如下:
```java
List<Map<String, Object>> list = ... // 原始 List<Map> 集合
List<String> codeList = list.stream()
.map(map -> map.get("code").toString()) // 将每个 Map 中的 "code" 字段转换成 String 类型
.collect(Collectors.toList()); // 将所有 "code" 字段的值收集到 List 集合中
Map<String, List<String>> resultMap = new HashMap<>();
resultMap.put("code", codeList); // 将 List 集合作为 value,"code" 作为 key,放入 Map 中
System.out.println(resultMap); // 输出结果
```
其中,`list.stream().map(...).collect(Collectors.toList())` 用于将每个 Map 中的 "code" 字段提取出来并转换成 `List<String>` 类型。
最后,将 `List<String>` 集合作为 value,"code" 作为 key,放入 `Map` 中即可。
需要注意的是,如果原始 List<Map> 集合中存在 "code" 字段的值为 `null` 或不存在 "code" 字段,则该方法会抛出空指针异常。因此,在实际使用中需要根据实际情况进行判空处理。