一 什么是Lambda表达式
  Lambda表达式:可以让你的代码更加的简洁。ambda无法单独出现,需要一个函数式接口来盛放,可以说lambda表达式方法体是函数式接口的实现,lambda实例化函数式接口,可以将函数作为方法参数,或者将代码作为数据对待。

二 Lambda表达式特性
  首先我们得知道函数式接口是什么。
  函数式接口(Functional Interfaces):如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。同时,引入了一个新的注解:@FunctionalInterface。可以把他它放在一个接口前,表示这个接口是一个函数式接口。这个注解是非必须的,只要接口只包含一个方法的接口,虚拟机会自动判断,不过最好在接口上使用注解 @FunctionalInterface 进行声明。在接口中添加了 @FunctionalInterface 的接口,只允许有一个抽象方法,否则编译器也会报错。
  Lambda表达式的语法格式:

    1.Lambda表达式使用 () 表示没有参数。
              2.如果Lambda表达式中只包含一个参数,可省略掉 () 。
              3.如果Lambda表达式的主题是一段代码块,需要使用 {} ,该代码块与普通的Java代码块并无区别,也可以返回或抛出异常。
              4.如果参数的类型可以由编译器推断得出可以省略参数类型,当然你也可以加上。
              5.可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

  常见的写法:

        (a) -> a * a
          (int a, int b) -> a + b
          (a, b) -> {return a - b;}
          () -> System.out.println(Thread.currentThread().getId())

三.方法引用
  
在lambda表达式中,方法引用是一种简化写法,引用的方法就是Lambda表达式的方法体的实现 
       语法结构:ObjectRef:: methodName 
       左边是类名或者实例名,中间的“::”是方法引用符号,右边是相应的方法名 
       方法引用一般分为三类: 
       静态方法引用,实例方法引用,构造方法引用

四.串行stream操作

什么是 Stream ? 这里的 Stream 不同于 io 中的 InputStream 和 OutputStream,Stream 位于包 java.util.stream 中, 也是 java 8 新加入的,Stream 只的是一组支持串行并行聚合操作的元素,可以理解为集合或者迭代器的增强版。什么是聚合操作?简单举例来说常见的有平均值、最大值、最小值、总和、排序、过滤等。

  Stream 的几个特征
    单次处理。一次处理结束后,当前Stream就关闭了。
    支持并行操作
    常见的获取 Stream 的方式
    从集合中获取
      Collection.stream();
      Collection.parallelStream();

  stream这个特性十分实用,在平常serviceImpl中可以方便的对sql取到的数据进行处理而不必去手动写大量的逻辑,相当于Mybatis和Mysql在service层的操作。

五.实战

  目前项目中正好用的为java8,可以尝试在项目中先用到,慢慢摸索。有待更新...........

 

转载于:https://www.cnblogs.com/zxfjava/p/9206808.html

java8新特性之Lambda表达式入门相关推荐

  1. Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解

    Java8新特性:Lambda 表达式.方法和构造器引用.Stream API.新时间与日期API.注解 1.Java8新特性 1.1.主要的新特性: 1.2.编程风格 2.Lambda 表达式 2. ...

  2. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  3. 【java8新特性】——lambda表达式与函数式接口详解(一)

    一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...

  4. java8新特性之lambda表达式--超级详细版本

    java8新特性之lambda表达式 1.什么是lambda表达式?为什么用它? 2. 为什么Java需要lambda表达式? 3. lambda表达式的语法 4.函数式接口 4.1 什么是函数式接口 ...

  5. java8新特性总结——lambda表达式

    最近看尚硅谷java8新特性视屏,总结一下学习知识. Lambda表达式:是一个匿名函数,我们可以把Lambda理解为一段可以传递的代码(将代码像数据一样传递),可以写出更简洁更灵活的代码.作为一种更 ...

  6. lambda 对象去重_最火的java8新特性:Lambda 表达式

    主要内容 1. Lambda 表达式 2. 函数式接口 3. 方法引用与构造器引用 4. Stream API 5. 其他新特性 Java 8新特性简介 速度更快 代码更少(增加了新的语法 Lambd ...

  7. java:java8新特性(Lambda 表达式、方法引用、构造器引用、数组引用、Stream API)

    速度更快 对 HashMap .ConcurrentHashMap低层的数据结构(数组+链表+二叉树) 低层的内存结构(将永久区更新为元空间,元空间使用的是物理内存) 代码更少(增加了新的语法 Lam ...

  8. 夯实Java基础(二十二)——Java8新特性之Lambda表达式

    1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...

  9. Java8新特性之- Lambda表达式和函数式接口

    Lambda表达式和函数式接口 1. 背景 Java是一门面向对象编程语言.面向对象编程语言和函数式编程语言中的基本元素(Basic Values)都可以动态封装程序行为:面向对象编程语言使用带有方法 ...

最新文章

  1. Unable to merge dex
  2. mysql平滑关闭_MySQL平滑删除数据的小技巧
  3. kotlin 中 lambda 表达式的 return 行为
  4. mac回退jdk版本_mac中不同jdk版本切换
  5. How is setModel triggering propery binding
  6. php 查看引入文件,include - 引入文件
  7. 使用python来读取超大型文件数据
  8. (转)国外 RPA 企业盘点:谁是领导者,谁是挑战者
  9. 网易163邮箱和网易126邮箱有什么区别?
  10. 孙玄:一文完全理解定时器实现技术
  11. http 报文格式、状态码
  12. TIR透镜的设计 Matlab,用于DLP投影系统的自由曲面TIR准直透镜设计
  13. NYNU开学大作战之补番真开心
  14. 学习blus老师js(1)--基础
  15. interface详解
  16. SpringBoot服务监控之Actuate
  17. 软件质量与测试--第六周作业 软件测试与评估
  18. 在vue项目中使用favicon.ico
  19. 基于RFID自动识别技术的智能试卷管理系统
  20. HTML5七夕情人节表白网页_生日快乐粒子烟花(自定义文字)_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码

热门文章

  1. 海明码!是人看的例子!说人话!
  2. 【那些年,我们一起追的女孩】第四章
  3. python的三种取整方式_python取整函数-取整函数,PYTHON
  4. mac删除文件(夹)报错:不能完成此操作,因为找不到一个或多个需要的项目。(错误代码 -43)
  5. GlobeControl 做鹰眼图
  6. 爬梯:注解和反射夯实
  7. RainyMood 享受漫步在雨中、又不用全身濕透的浪漫,幫助你文思泉湧的雨聲產生器...
  8. SGM58200开发以及相关应用
  9. 2017中国广州国际工业自动化技术及装备展览会会刊(参展商名录)
  10. 二十二 --我在软件园的那些日子里