这节,我们来通过具体的实例来看看Java8的具体用法。

  首当其冲,就是lambda用法。

  这里的案例,就是用lambda来实现runnable接口,我们知道以前用匿名内部类的方式来实现runnable接口,这种方法晦涩难懂,用lambda表达式实现以后,这样的代码清爽了不少。上两种对比的代码:

  

    public static void main(String[] args) {new Runnable() {public void run() {System.out.println("这是匿名内部类实现的runnable接口");        }}.run();    int i=0;Runnable runnable=()->{System.out.println("i="+i);System.out.println("aaaaaaaaaaaaaa");};runnable.run();}

  通过上述代码了,我们可以明明白白的看到这回事,lambda表达式中能够访问非静态的局部变量,这样,我们程序员们的代码是不是少写了很多,层次结构明了了很多。

  案例二,我们分别用匿名内部类和lambda表达式来实现接口中带参的方法,比较孰优孰劣。

  我们这里做一个接口叫IAction,分别让其实现,上代码:

package test;public class TestInterface {public static void main(String[] args) {IAction iAction=new IAction() {@Overridepublic void excute(String content) {// TODO Auto-generated method stub
                  System.out.println(content);        }};iAction.excute("aaaa");IAction iAction2=(String content)->{System.out.println(content);};iAction2.excute("bbbb");}static interface IAction{void excute(String content);}}

  根据上面的代码,我们得出来这样的总结:

  ①利用lambda表达式以后,代码编写的篇幅大量的减少。

  ②利用lambda表达式以后,不用显式进行方法名称的调用。

  ③利用lambda表达式以后,代码的层次感更加强烈明了。

  而Stream接口类似于一个什么了,一个泛型接口,使用户联合lambda表达式使其对数据集的操作更加的方便。下面,我通过一个对list操作的例子,老看看stream接口确实是为为集合操作带来了不少的好处。首先来一个people的实体类:

  

static class People{String name;int age;double height;public People(String name, int age, double height) {super();this.name = name;this.age = age;this.height = height;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "People[ name="+name+",age="+age+",height="+height+"].";}}

  然后来一个创建list集合的方法,源代码如下:

  

static List<People> createPeople(){List<People> peoples=new ArrayList<People>();People people=new People("郑飞", 34, 1.99);peoples.add(people);people=new People("刘飞", 29, 1.89);peoples.add(people);people=new People("马飞", 24, 1.79);peoples.add(people);people=new People("王菲", 19, 1.69);peoples.add(people);return peoples;}

  接着,来一个Stream接口,将其利用Foreach循环将其输出,源代码如下:

    public static void main(String[] args) {List<People> peoples=   createPeople();Stream<People> stream= peoples.stream();stream.forEach((e)->{System.out.println(e.toString());});}

  运行结果如下:

  

  可见,Stream接口作用有如下:

  流可以是无限的、有状态的,可以是顺序的,也可以是并行的。在使用流的时候,你首先需要从一些来源中获取一个流,执行一个或者多个中间操作,然后执行一个最终操作。中间操作包括filter、map、flatMap、peel、distinct、sorted、limit和substream。终止操作包括forEach、toArray、reduce、collect、min、max、count、anyMatch、allMatch、noneMatch、findFirst和findAny。 java.util.stream.Collectors是一个非常有用的实用类。该类实现了很多归约操作,例如将流转换成集合和聚合元素。 使其对集合操作更加灵活。

  说了这么多谓词操作,我这里用filter实例作为讲解。

  再上述的代码中,加上短短的一句代码,就ko了。

         stream=stream.filter(e->e.getAge()>20);

  可见了,有了这些操作的方法以后,操作集合也不需要你写过多的代码,就像sql一样,利用命令式语言来处理集合操作了。

  通过了,这些Java8的小案例,我们明白了,lambda表达式和Stream虽然是采用c2c(copy to C#)的方式,但是C#多年的经验确实告诉我们了,确实很好用,一切语言都是为了我们,使我们少写代码,提高相应的工作效率而奋斗。

 

  

屌丝就爱尝鲜头——java8再判断相关推荐

  1. 屌丝就爱尝鲜头——java8初体验

    Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分 ...

  2. OPPO尝鲜android版本更新,OPPOColorOS系统国内首发安卓8.1,用户体验大升级

    [天极网手机频道]在用户眼中,OPPO并不是一家系统更新速度快的手机品牌,这源于OPPO对于用户体验的高度重视,不求最快但求更好.而近日,OPPO却因为ColorOS系统被刷屏,原因就是基于Andro ...

  3. android朋友圈动态视频,安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是?...

    原标题:安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是? 微信现在已经是成为人们每天最常使用的聊天工具之一,因此微信的每一次更新和变化都会引起人们的注意.这不,安卓版的微信又悄悄推出 ...

  4. 头回见!95后女大学生买iPhone11出租:租借者想尝鲜或显摆

    朋友们,你见过共享商品多了去了,但是也没听说过共享iPhone11的吧? 最近就有一个"95后女大学生买iPhone出租"引发关注. 据报道,95后女孩小涵是长春某大学大四学生,在 ...

  5. 京东叮咚“家族”再入新品,从“尝鲜”到“混战”,我们看到了什么?

    进入2018年,智能音箱的火热势头依然不减. 无论在资本市场,还是互联网巨头的眼中,风口地位无疑!但智能音箱火爆之余,其市场短板也是显而易见的. 目前,行业内大部分企业采用补贴.降价等策略降低消费者的 ...

  6. 雷鸟Air 1S评测:体验升级,首发尝鲜价2299元

    今年4月份雷鸟Air正式上市,这款采用BirdBath方案的AR眼镜不仅在视觉观感极佳,同时综合佩戴体验.时尚设计方面都很出色,并在电商平台也非常受用户欢迎,据易观分析数据,雷鸟创新在2022Q3国内 ...

  7. idea 升级到2020后 无法启动_升级iOS 14尝鲜后,无法降级 iOS13.5.1?

    北京时间6月23日凌晨1点,苹果在线上举行了WWDC 2020全球开发者大会.给我们正式带来了iOS 14,并且在凌晨3点半时的时候,苹果发布 iOS 14 beta 内测版系统,并提供内测升级方法, ...

  8. 相对舒适的爬虫入门系列(一):手快尝鲜【requests库】

    一.实现爬虫命令的交互前,总是要经过环境配置的 (虽然不同系统操作层面上会有不同,本文主要讲方向性内容(配置环境)+一些具体实操代码上手,要问咱也先说咱的环境是win10哈) 1.请直接下载安装Ana ...

  9. 读标准03-IEEE1451.5标准协议尝鲜实现

    读标准03-IEEE1451.5标准协议尝鲜实现 前面两个文章里面已经详细描述了 TEDS 和 Message 的组成,这里 C 的实现分两个部分:分别对 TEDS 和 Message 的 数据结构实 ...

最新文章

  1. 基于视角特征提取的3D检测方法汇总
  2. linux系统下用到的小知识点积累
  3. android+4.2+mtp+在此设备上不支持+文件类型,Nexus 4无法通过MTP显示文件
  4. modelsim显示状态机名称的方法
  5. OpenCL的安装与配置
  6. 玛酷机器人课程视频_建阳玛酷机器人丨2019WRO机器人比赛凯旋而归!
  7. ATL(COM) 开发下 -- VS2010
  8. linux无密码scp,linux通过ssh-keygen实现无密码scp文件和目录
  9. 9.特殊矩阵的压缩存储
  10. BZOJ5262(容斥)
  11. java 基本语法 二_java基础语法2
  12. 图像分类算法DenseNet论文解读
  13. 数字藏品平台开发数字藏品系统开发技术架构分析
  14. McAfee Endpoint Security 10.6卸载
  15. ubuntu16.04server安装dell服务器H750raid卡驱动
  16. excel两列数据对比找不同_快速找出表格中两列的不同项,事半功倍的方法记得收藏...
  17. 非主流照片的PS教程!
  18. 平衡电枢磁性扬声器行业调研报告 - 市场现状分析与发展前景预测
  19. Weex Android SDK源码分析
  20. [HDU-6578]

热门文章

  1. 史上首次无人车队集体婚礼,直男新郎给新娘の礼物:工业设计书
  2. OpenAI新研究:通过非监督学习提升NLP任务表现
  3. PyTorch发布一周年:盘点社区和工程大事件,后来者居上态势已显?
  4. SFB 项目经验-49-耗时5天修复某上市企业2000人邮箱数据库实录(五一巨献)
  5. 利用Shell将MySQL数据表导出为csv文件
  6. import 和 export -- ES6
  7. LVS+Keepalived实现高可用群集
  8. 常用的Linux命令行文本处理工具总结
  9. OC无法进行多人会话
  10. 在一个软件开发项目中进行实际日程安排的十二点提示(转)