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只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。
更多Stream API的实战案例–目录(详情点击这里
  • 把一个List<对象> 从中取出特定的一些内容,返回一个新的list
    • List User[id,nm] => List id
  • 把一个List<对象> 从中取出特定的一些内容, 并按照一定规则选取,返回一个新的list
  • 把一个List<对象> 从中取出特定的一些内容, 并按照一定规则选取,并赋值,返回一个新的list
  • 把一个List<对象> 从中取出特定的一些内容, 并按照一定规则选取,并赋值,返回一个Map

待续~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值