Java8 Stream中flatMap操作如何实现多级集合扁平化?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1237个文字,预计阅读时间需要5分钟。
Stream中的flatMap是Stream的一种中间操作,和map类似,也是对集合类型进行操作的Stream中间操作。但它与map不同的是,它可以对Stream流中的单个元素再进行(切片),从另一个角度来说,它可以将一个元素转换成多个元素。
stream中的flatmap是stream的一种中间操作,它和stream的map一样,是一种收集类型的stream中间操作,但是与map不同的是,它可以对stream流中单个元素再进行拆分(切片),从另一种角度上说,使用了它,就是使用了双重for循环。
查看Stream源码中flatmap的方法定义:
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)
从方法的定义可以看出,其入参是一个函数式接口,该接口的返回类型应该是Stream< ? extends R > 类型的。
从实际需求中查看如何使用flatmap:
需求:有一个补习学校,其中有若干老师教学若干门课程,现在学校有关于数学教学的通知要传达给所有学数学的学生家长,将电子邮件发送到他们的邮箱中。
本文共计1237个文字,预计阅读时间需要5分钟。
Stream中的flatMap是Stream的一种中间操作,和map类似,也是对集合类型进行操作的Stream中间操作。但它与map不同的是,它可以对Stream流中的单个元素再进行(切片),从另一个角度来说,它可以将一个元素转换成多个元素。
stream中的flatmap是stream的一种中间操作,它和stream的map一样,是一种收集类型的stream中间操作,但是与map不同的是,它可以对stream流中单个元素再进行拆分(切片),从另一种角度上说,使用了它,就是使用了双重for循环。
查看Stream源码中flatmap的方法定义:
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)
从方法的定义可以看出,其入参是一个函数式接口,该接口的返回类型应该是Stream< ? extends R > 类型的。
从实际需求中查看如何使用flatmap:
需求:有一个补习学校,其中有若干老师教学若干门课程,现在学校有关于数学教学的通知要传达给所有学数学的学生家长,将电子邮件发送到他们的邮箱中。

