stream流Map的使用
时间: 2024-04-21 18:18:07 浏览: 134
Stream流中的map方法可以将一个流中的元素类型转化为另一种类型,常用于数据类型的转换。使用map方法时,需要传入一个Function接口类型的参数,该接口的apply方法将被应用于流中的每个元素,返回一个新的元素类型。例如,可以将一个字符串流中的每个字符串转化为其长度,代码如下:
```
List<String> strings = Arrays.asList("hello", "world", "java");
List<Integer> lengths = strings.stream()
.map(String::length)
.collect(Collectors.toList());
```
在上面的代码中,首先将一个字符串列表转化为一个字符串流,然后使用map方法将每个字符串转化为其长度,最后使用collect方法将结果收集到一个列表中。
除了map方法,还有一个flatMap方法,可以将一个流中的元素展开为多个元素,常用于将嵌套的集合或数组展开为一个扁平的流。例如,可以将一个字符串流中的每个字符串拆分为字符流,代码如下:
```
List<String> strings = Arrays.asList("hello", "world", "java");
List<Character> characters = strings.stream()
.flatMap(str -> str.chars().mapToObj(c -> (char) c))
.collect(Collectors.toList());
```
在上面的代码中,首先将一个字符串列表转化为一个字符串流,然后使用flatMap方法将每个字符串拆分为字符流,最后使用collect方法将结果收集到一个列表中。注意,flatMap方法需要传入一个Function接口类型的参数,该接口的apply方法将被应用于流中的每个元素,返回一个新的流。在上面的代码中,使用了str.chars().mapToObj(c -> (char) c)将一个字符串转化为一个字符流。
阅读全文