
熟练使用JDK8,让你的开发效率高起来
我们都知道JDK现在使用的比较普遍的还是 JDK8,也有人说是 JDK11 但是了不起解除的项目,目前还没有直接升级到 JDK11 的,毕竟语法有一些改变,而且还有语法糖的存在,但是 JDK8 已经算是普及了,就算是培训机构,也早就从 JDK7 已经升级教学到 JDK8了,今天了不起也就来说说我们使用 JDK8 中的各种小玩意,可以让自己的开发效率加倍。
JDK8中的快捷小技巧
我们直接从问题然后来区分这个 JDK7 和 JDK8 中完成相同的功能所实现的方式有什么不同,来看看为什么现在都比较喜欢使用 JDK8.
1.筛选班级里面年龄大于15岁的人 2.两个班级人员比计较,去掉某一个班中年龄相同的人。
我们有两个班级的人,分别是两个 List,也就是1班和二班
两个班级人员都有这些人:
这是了不起准备的数据,接下来我们分别来看看上面准备的三个问题,每个问题,使用 JDK7 和 JDK8 的实现方式来安排一下。
问题一:筛选班级里面年龄大于15岁的人
我们如果要筛选班级里面大于15岁的人,那么肯定离不开循环,然后我们去找一下每个班级里面,年龄大于15对的人。
JDK7:
结果:
我们从1班里面筛选出了一个赵六,他是大于15岁的人,功能实现,已经OK了,而JDK8应该怎么实现?
同样的结果,
但是,我们直接使用 JDK8 所提供的 Stream 流就完成了这个操作,是不是感觉在开发上,直接省去了不少的代码。
那么这个 Stream 应该怎么去理解?
Stream的特性:
Stream的特点
而这个 filter,实际上就是用于通过设置的条件过滤出元素,filter中也是可以有组合条件,而不单单是单一条件,至于想写是多少条件,那就得看你的需求了,话不多说,我们来继续看第二个问题。
问题二:两个班级人员比计较,去掉某一个班中年龄相同的人。
这个问题来了,我们是不是需要去循环对比,然后通过比较每个学生的年龄,然后去掉年龄相同的人。
JDK7的实现方式:
我们看一下两个班的人员,2班中年龄和1班中重复的,有刘能和赵刚,那么我们在实现之后,二班中的人,是不是就只剩下了张华和白条了。
输出结果:
我们从2班中,把只要和1班里面年龄相同的学生都移除了,JDk7实现了,那么JDK8怎么实现呢?
输出看结果:
结果一样,但是代码量很明显,少了不少,但是可读性就没有那么强了,如果是一个对 JDK8 没有那么熟练的人来看,甚至都不知道逆向实现什么功能。
这里,我们再来看看这个 Stream 提供的一下关键的操作。
- filter 我们已经说过了,不再赘述
- distinct 返回一个元素各异(根据流所生成元素的hashCode和equals方法实现)的流。
- limit 会返回一个不超过给定长度的流。
- skip 返回一个扔掉了前n个元素的流。
- map 接受一个函数作为参数。这个函数会被应用到每个元素上,并将其映射成一个新的元素(使用映射一词,是因为它和转换类似,但其中的细微差别在于它是“创建一个新版本”而不是去“修改”)。
- flatMap 使用flatMap方法的效果是,各个数组并不是分别映射成一个流,而是映射成流的内容。所有使用map(Arrays::stream)时生成的单个流都被合并起来,即扁平化为一个流。
我们来分别演示一下后面的这几个关键字的用法:
distinct
skip
输出结果:
limit
输出结果:
map:
输出结果:
flatMap;
执行结果:
其实关于 JDK8 的使用,很多都是需要在日积月累的情况下才能慢慢的熟练,如果说一时间让你去学习,那么有很多方法,你不用了之后,慢慢的还是会遗忘。
所以关于 JDK8 的小技巧你学会了么?
文章转载自公众号:Java极客技术
