stream将list转map
时间: 2023-10-15 13:22:50 浏览: 95
要将一个列表转换为映射(Map),可以使用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("apple", "banana", "cherry");
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(
// key mapper
fruit -> fruit,
// value mapper
fruit -> fruit.length()
));
System.out.println(map);
}
}
```
在上述示例中,我们将字符串列表`list`转换为一个映射`map`,其中键为水果名称,值为水果名称的长度。输出结果将是`{apple=5, banana=6, cherry=6}`。
请注意,如果列表中存在重复的元素,即相同的键,则会引发`IllegalStateException`。如果你需要处理重复键,可以提供一个合并函数来解决冲突。例如,你可以使用`Collectors.toMap()`方法的重载形式:
```java
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(
fruit -> fruit,
fruit -> fruit.length(),
(existingValue, newValue) -> existingValue
));
```
在这个示例中,我们提供了一个合并函数,它简单地返回已存在的值作为解决冲突的策略。你可以根据需要修改合并函数以适应你的业务逻辑。
希望这可以帮助到你!如有任何疑问,请随时提问。
阅读全文