JDK1.8新特性总结

之前的实习的过程中,一位有着非常丰富经验的CTO曾对我说过,代码的质量,要不断的去提升。从刚开始的CRUD,到具体的业务流程实现,在这个过程中要不断的提炼代码。把一些冗余的代码,变得精炼,精炼,再精炼。

我虽然理解他的意思,但是,还不是很明白使用何种方式,达到这种效果。

最近也面试了许多家,他们常会以这样的一个问题来问我。

Q1:你常使用的jdk版本是多少? 
1.8
Q2:你知道jdk8 的新特性吗?
??????我蒙了,这玩意还有这操作,有什么用?

但是当我了解完后我才知道,原来这就是代码提炼的实现方式之一。废话过多了,正文走起~~~

==============================================

JDK简介

参考博客地址https://www.cnblogs.com/linuxws/p/10029875.html
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

java版本特性

在这里插入图片描述在这里插入图片描述

我这里主要分析1.8,把我日常工作中接触到的说明一下,后续在补充

Stream API

  • 模拟效果图:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426100755510.png

我们在现实的工作中是否会常常遇到这样的需求:把一个用户集合中所有的用户身份id,放入另一个集合中。

使用java8的特性即可实现。

List<String> idcards= users.stream().map(User::getIdcard).collect(Collectors.toList())

反观我们日常方法

List<String> idcards=new ArrayList<String>();//定义一个集合来装身份证号码

for(int i=0;i<users.size();i++){

  idcards.add(users.get(i).getIdcard());

}
  • 参数说明:
  	 users:一个实体类的集合,类型为List<User>
	 User:实体类
	 getIdcard:实体类中的get方法,为获取User的idcard

实现了代码的高度提炼。

stream()优点

  • 无存储

    • stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。
    • 为函数式编程而生。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。
  • 惰式执行。

    • stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。
  • 可消费性。

    • stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。

待续~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章