stream().collect(collectors.tomap
时间: 2023-04-17 17:01:10 浏览: 126
java8新特性之stream的collect实战教程
5星 · 资源好评率100%
stream().collect(Collectors.toMap())是Java 8中的一个方法,用于将一个流(Stream)转换为一个Map对象。
具体来说,它的作用是将流中的元素按照指定的键值对映射关系转换为一个Map对象。其中,键值对的映射关系由一个Function函数式接口实现,它将流中的元素转换为Map中的键值对。
例如,以下代码将一个字符串数组转换为一个Map对象,其中键为字符串的长度,值为字符串本身:
```
String[] words = {"apple", "banana", "orange", "pear"};
Map<Integer, String> map = Arrays.stream(words)
.collect(Collectors.toMap(String::length, Function.identity()));
```
执行结果为:
```
{5=apple, 6=orange, 6=banana, 4=pear}
```
需要注意的是,如果流中存在重复的键,会抛出IllegalStateException异常。可以通过指定一个合并函数来解决这个问题,例如:
```
Map<Integer, String> map = Arrays.stream(words)
.collect(Collectors.toMap(String::length, Function.identity(), (s1, s2) -> s1 + "," + s2));
```
这里的合并函数将两个重复的值用逗号分隔连接起来,最终得到的Map对象为:
```
{5=apple, 6=orange, 6=banana, 4=pear}
```
阅读全文