stream流怎么把list转为map
时间: 2023-07-05 10:26:53 浏览: 46
可以使用Java 8中的Stream API来将List转换为Map。下面是一个示例代码:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length));
```
在这个示例中,我们将List中的每个元素作为Map的键,并将每个元素的长度作为Map的值。我们使用 `Function.identity()` 方法来获取元素本身作为键,使用 `String::length` 方法来获取元素的长度作为值。最终,我们使用 `Collectors.toMap()` 方法将Stream转换为Map。
另外,如果List中有相同的键,那么在转换为Map时可能会抛出 `java.lang.IllegalStateException` 异常。如果你想避免这种情况,可以将 `toMap()` 方法的第三个参数设置为一个合并函数,以合并重复的键。例如:
```java
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length, (v1, v2) -> v1));
```
在这个示例中,我们将合并函数设置为 `(v1, v2) -> v1`,它将返回第一个值,即遇到相同键时使用原始值,而不是使用新值。