Java8StreamApi中的map和flatMap操作方法是什么-创新互联

本篇内容主要讲解“Java8 StreamApi中的map和flatMap操作方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java8 StreamApi中的map和flatMap操作方法是什么”吧!

创新互联专注于企业成都全网营销推广、网站重做改版、新安网站定制设计、自适应品牌网站建设、H5网站设计商城网站制作、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为新安等各大城市提供网站开发制作服务。

1.前言

Java 8提供了非常好用的 Stream API ,可以很方便的操作集合。今天我们来探讨两个Stream 中间操作map(Function mapper)flatMap(Function> mapper)

2. map 操作

map 操作是将流中的元素进行再次加工形成一个新流。这在开发中很有用。比如我们有一个学生集合,我们需要从中提取学生的年龄以分析学生的年龄分布曲线。

放在Java 8 之前 我们要通过新建一个集合然后通过遍历学生集合来消费元素中的年龄属性。现在我们通过很简单的流式操作就完成了这个需求。

对应的伪代码:

// 伪代码 List ages=studentList.stream().map(Student::getAge).collect(Collectors.toList());

3. flatMap 操作

通过上面的例子,map 操作应该非常好理解。那么flatMap 是干嘛的呢? 这样我们把上面的例子给改一下,如果是以班级为单位,提取所有班级下的所有学生的年龄以分析学生的年龄分布曲线。这时我们使用上面的方法还行得通吗?

List> studentGroup= gradeList.stream().map(Grade::getStudents).collect(Collectors.toList());

通过上面的一顿操作,我们只能得到每个班的学生集合的集合List> 。 我们还需要嵌套循环才能获取学生的年龄数据,十分不便。如果我们能返回全部学生的集合List 就方便多了。 没错!flatMap 可以搞定!

// flatMap 提取 List map 提取年龄 List ages = grades.stream().flatMap(grade -> grade.getStudents().stream()).map(Student::getAge).collect(Collectors.toList());

正如上面的伪代码所示,我们使用flatMap 将所有的学生汇聚到一起。然后再使用map 操作提取年龄。flatMap 不同于map 地方在于map 只是提取属性放入流中,而 flatMap 先提取属性放入一个比较小的流,然后再将所有的流合并为一个流。有一种 “聚沙成塔” 的感觉。

到此,相信大家对“Java8 StreamApi中的map和flatMap操作方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联建站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享文章:Java8StreamApi中的map和flatMap操作方法是什么-创新互联
当前链接:http://scyanting.com/article/cccesd.html