map和flatMap怎么在Java8项目中使用-创新互联

本文章向大家介绍map和flatMap怎么在Java8项目中使用,主要包括map和flatMap怎么在Java8项目中使用的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

创新互联自2013年创立以来,先为古塔等服务建站,古塔等地企业,进行企业商务咨询服务。为古塔企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

Java可以用来干什么

Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。

1.前言

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

2. map 操作

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

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

示意图:

map和flatMap怎么在Java8项目中使用

对应的伪代码:

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

3. flatMap 操作

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

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

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

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

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

再画一张图来加深理解:

map和flatMap怎么在Java8项目中使用

到此这篇关于map和flatMap怎么在Java8项目中使用的文章就介绍到这了,更多相关的内容请搜索创新互联建站以前的文章或继续浏览下面的相关文章希望大家以后多多支持创新互联建站!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、建站服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

本文题目:map和flatMap怎么在Java8项目中使用-创新互联
网页路径:https://www.cdcxhl.com/article16/hjogg.html

成都网站建设公司_创新互联,为您提供移动网站建设网站策划网站导航企业网站制作Google动态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发