stream收集为map
时间: 2023-11-09 10:01:55 浏览: 44
可以使用Collectors.toMap()方法将Stream收集为Map。该方法需要传入两个lambda表达式,分别用于指定Map中的key和value。
例如,将一个字符串数组按照字符串长度收集为Map:
```
String[] words = {"apple", "banana", "orange", "pear"};
Map<String, Integer> map = Arrays.stream(words)
.collect(Collectors.toMap(s -> s, String::length));
```
这里的key为字符串本身,value为字符串长度。
相关问题
stream.filtermap
stream.filtermap是一个函数式编程中常用的操作,它结合了filter和map两个操作。在Java 8及以上的版本中,Stream类提供了filtermap方法来实现这个功能。
filtermap操作可以用于对一个流中的元素进行筛选和转换。首先,filtermap会根据给定的条件对流中的元素进行筛选,只保留满足条件的元素。然后,对保留下来的元素进行转换操作,生成一个新的流。
具体来说,filtermap操作接收两个参数:一个是Predicate函数式接口,用于筛选元素;另一个是Function函数式接口,用于对筛选后的元素进行转换。Predicate接口定义了一个test方法,用于判断元素是否满足条件;Function接口定义了一个apply方法,用于对元素进行转换。
下面是一个示例代码,演示了如何使用filtermap操作:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<String> result = numbers.stream()
.filter(n -> n % 2 == 0) // 筛选偶数
.map(n -> "Number: " + n) // 转换为字符串
.collect(Collectors.toList());
System.out.println(result);
```
输出结果为:["Number: 2", "Number: 4"]
在上面的示例中,我们首先使用filter方法筛选出偶数,然后使用map方法将每个偶数转换为字符串。最后,使用collect方法将转换后的元素收集到一个新的列表中。
使用stream流讲map转化为list
好的,您可以按照以下方式使用Java 8的Stream流将Map转换为List:
```
Map<String, Integer> map = new HashMap<>();
map.put("apple", 5);
map.put("banana", 3);
map.put("orange", 2);
List<Map.Entry<String, Integer>> list = map.entrySet().stream()
.collect(Collectors.toList());
```
在上述代码中,我们首先将Map转换为其entrySet,然后使用Stream的collect()方法将其收集为List对象。请注意,最终的List对象中包含Map.Entry对象,其中包含Map中的键和值。