java 零基础入门 -java8 新特性 (下篇)
哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流 学 习,互相学习,才能成长的更快,对吧。
我是一名 java 开发,所以日常接触到最多的就是 java 啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!
一、概述
论前几期啊,我们是分别讲了Object类
、Date类
、FormDate类
、Calendar类
、System类
及StringBuilder类
,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。
上几期,我们是完整的学完了 java 异常类的学习及实战演示、以及学习了线程进程等基础概念,而这一期,我们要来玩点好的东西,那就是 java8,我们都知道 java8 是自 2004 年发布 java5 之后最重要且一次重大的版本更新,虽然我们的 JDK 环境 也升级到了 java1.8,但是在日常的开发过程中,使用最多的编程风格还是停留在 JDK1.7 版本。
那对于 java1.8,你们有了解多少它相关的新特性呢?至于 java8,于 2013 年 9 月正式发布,距离至今已快十年载了,想必大家对它的新特性大大小小也耳濡目染了些吧?那么趁着今天这个空闲日子,我就跟大家一起来聊聊它-java8 之新特性。
二、本期教学目标
java8 有哪些新特性
什么是函数式接口
什么是 Lambda 表达式
掌握 Stream Api
Stream 和 Collect 集合区别
Stream 创建方式
Stream 操作三步骤
三、正文
1️⃣java8 新特性
2️⃣什么是 Lambda 表达式
1️⃣可选类型声明
2️⃣可选的参数圆括号
3️⃣可选的大括号
4️⃣可选的返回关键字
以上第 1、2 点内容,我是总结到了该篇《java零基础入门-java8新特性(上篇)》,需要的小伙伴可以去传送门直接去。
3️⃣什么是函数式接口
总而言之:函数式接口,即适用于函数式编程场景的接口。而 Java 中的函数式编程体现就是 Lambda 表达式,所以函数式接口就是可以适用于 Lambda 使用的接口。只有确保接口中有且仅有一个抽象方法,Java 中的 Lambda 才能顺利地进行推导。
4️⃣掌握 Stream Api
总而言之,何为 Stream 流,Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你对集合进行一些处理操作,比如对集合进行非常复杂的查找、过滤和映射数据等操作。
以上第 3、4 点内容,我是总结到了该篇《java 零基础入门-java8 新特性(中篇)》。需要的小伙伴可以去传送门直接去。
5️⃣Stream 和 Collections 区别
说起 Stream 流,那肯定会想到 Collections 类,对比它两,你们知道,它两之间有何联系,又有何异同呢?这点,想必你们在上一期既然学了,那对于你们而言,肯定是要有所准备的啊。
见名知意,既然称 Stream 为流,而 Collections 为集合工具类,那自然好区别,Stream 流是一个集合元素的函数模型,而 Collections 是对元素集合进行的操作,而它本身也是一个集合,而 Stream 流不是集合,更不是数据结构,其本身也不存储任何元素,但它可以操作元素进行任何操作,是一种对元素的处理方案。
且对于 Stream 流而言,Stream 流属于管道流,只能被消费一次,比如第一次 Stream 流调用完,数据就会被处理后转到下一个 Stream 流上,而上一个 Stream 流就会关闭掉,不能再调用了。但是对于 Collections,它不是,本身也是一个集合,即使是处理完了,也能还被接着调用。
我可以给大家举个例子:这样大家就好理解了:
而对于 Stream 而言,它就是排序完后就结束了,转为下一个 Stream。@Testpublic void testSort() {
这样对比,你们就明白了吧。
6️⃣Stream 创建方式
上一期第四点也是讲述了其 Stream 流,而这一期,我们就要真正的来学习,到底如何使用它,毕竟学以致用就是这么来的,希望你们在学完后,也能对此有一定的启发与实战练习,能把它用上当前的项目上,毕竟用过后,还是很便捷的,对于其中有些 api 比起自己手动处理真的方便不少,而且执行效率也比你自己处理的快得多。
说了这么多,可能大家都还不是很清楚 Stream 到底怎么创建,并且它有几种创建方式呢?这点你们大家有课余时间自行了解过吗?除了最直接的创建方式,就是直接对集合进行调用 stream()方法即可,就是通过集合的方式,那除了这种方式还有其他的吗?
如下是我总结的四种创建 Stream 流的方法:
通过集合创建 Stream 流。
比如:list.stream();
通过数组创建 Stream 流。
比如:Arrays.stream(arr);
通过 Stream.of()方法 Stream 流。
比如:Stream.of("a","b");
通过 Stream.iterate(),创建无限流。
比如:Stream.iterate()
如下,我具体展开给大家讲解一下吧,具体如何创建,并且实测如何玩转 Stream 流。
第一种:通过集合创建 Stream 流。
代码演示如下:
第二种:通过数组创建 Stream 流。
代码演示如下:
第三种:通过 Stream.of()方法 Stream 流。
代码演示如下:
第四种:通过 Stream.iterate(),创建无限流。
代码演示如下:
如上我需要解释一下,代码啥意思,这是从 x=0 开始,然后获取 0-10 之间的偶数,然后再计数 0-10 之间共有多少个偶数。
...
而对于具体打印,就是计数该集合或数组中的元素个数。比如对于示例 1 返回自然是 2。因为总共就两个元素。
打印结果截图如下:
7️⃣Stream 操作三步骤
我们在上一节点,学完了对 Stream 流如何创建,及多种方式如何进行创建,对吧,那你们知道其 Stream 流的操作步骤不?因为直接用,肯定不会很太注意它是如何工作的。
如下是总结的 Stream 操作的三步骤,
创建 Stream。
操作 Stream。
终止操作。
具体怎么理解呢?
第一步:创建 Stream,对于一个数据源(如集合、数组),先获取一个流。接着是操作 Stream 流,讲的是一个中间操作链,对数据源进行对应的操作,其中可以进行多次操作,每操作一次,就生成一个新的 Stream。而最后一步,终止操作,就是执行中间链操作处理出结果。
具体我用代码给大家演示一下吧:
先是通过一个集合来创建 stream 流,完了之后其中操作了其 stream 流,其中 stream1、stream2 就是在操作 stream 的中间过程,然后最后打印输出是终止操作。
如下是最终执行结果。
所以对于 stream 流,并不是你们想象的那么难,只要你们能好好对其进行挖掘,并且学一下常用的那些 api 方法,其实就足够了。
... ...
好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
四、文末
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------
版权声明: 本文为 InfoQ 作者【喵手】的原创文章。
原文链接:【http://xie.infoq.cn/article/80cdb81caf3df63c31ad14d31】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论