list转map stream
时间: 2023-10-31 14:54:21 浏览: 89
要将一个列表(List)转换为一个映射(Map)流(Stream),你可以使用Java 8的Stream API的`Collectors.toMap()`方法。下面是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = List.of("key1", "value1", "key2", "value2", "key3", "value3");
Map<String, String> map = IntStream.range(0, list.size() / 2)
.boxed()
.collect(Collectors.toMap(i -> list.get(i * 2), i -> list.get(i * 2 + 1)));
System.out.println(map);
}
}
```
在上面的示例中,我们假设列表中的元素是成对出现的,即key1、value1、key2、value2等。我们使用`Collectors.toMap()`方法将列表中的元素分组成键值对,在这里我们将索引为偶数的元素作为键,索引为奇数的元素作为值。最后,我们将结果打印出来。
请注意,如果列表中存在重复的键,则会抛出`IllegalStateException`异常。如果你需要解决重复键的情况,请参考`Collectors.toMap()`方法的其他重载形式,提供一个合适的合并函数或者指定一个`Map`实现类来处理冲突。
阅读全文