java8新特性之Lambda表达式入门
一 什么是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表达式入门相关推荐
- Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解
Java8新特性:Lambda 表达式.方法和构造器引用.Stream API.新时间与日期API.注解 1.Java8新特性 1.1.主要的新特性: 1.2.编程风格 2.Lambda 表达式 2. ...
- java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合
java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...
- 【java8新特性】——lambda表达式与函数式接口详解(一)
一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...
- java8新特性之lambda表达式--超级详细版本
java8新特性之lambda表达式 1.什么是lambda表达式?为什么用它? 2. 为什么Java需要lambda表达式? 3. lambda表达式的语法 4.函数式接口 4.1 什么是函数式接口 ...
- java8新特性总结——lambda表达式
最近看尚硅谷java8新特性视屏,总结一下学习知识. Lambda表达式:是一个匿名函数,我们可以把Lambda理解为一段可以传递的代码(将代码像数据一样传递),可以写出更简洁更灵活的代码.作为一种更 ...
- lambda 对象去重_最火的java8新特性:Lambda 表达式
主要内容 1. Lambda 表达式 2. 函数式接口 3. 方法引用与构造器引用 4. Stream API 5. 其他新特性 Java 8新特性简介 速度更快 代码更少(增加了新的语法 Lambd ...
- java:java8新特性(Lambda 表达式、方法引用、构造器引用、数组引用、Stream API)
速度更快 对 HashMap .ConcurrentHashMap低层的数据结构(数组+链表+二叉树) 低层的内存结构(将永久区更新为元空间,元空间使用的是物理内存) 代码更少(增加了新的语法 Lam ...
- 夯实Java基础(二十二)——Java8新特性之Lambda表达式
1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...
- Java8新特性之- Lambda表达式和函数式接口
Lambda表达式和函数式接口 1. 背景 Java是一门面向对象编程语言.面向对象编程语言和函数式编程语言中的基本元素(Basic Values)都可以动态封装程序行为:面向对象编程语言使用带有方法 ...
最新文章
- Unable to merge dex
- mysql平滑关闭_MySQL平滑删除数据的小技巧
- kotlin 中 lambda 表达式的 return 行为
- mac回退jdk版本_mac中不同jdk版本切换
- How is setModel triggering propery binding
- php 查看引入文件,include - 引入文件
- 使用python来读取超大型文件数据
- (转)国外 RPA 企业盘点:谁是领导者,谁是挑战者
- 网易163邮箱和网易126邮箱有什么区别?
- 孙玄:一文完全理解定时器实现技术
- http 报文格式、状态码
- TIR透镜的设计 Matlab,用于DLP投影系统的自由曲面TIR准直透镜设计
- NYNU开学大作战之补番真开心
- 学习blus老师js(1)--基础
- interface详解
- SpringBoot服务监控之Actuate
- 软件质量与测试--第六周作业 软件测试与评估
- 在vue项目中使用favicon.ico
- 基于RFID自动识别技术的智能试卷管理系统
- HTML5七夕情人节表白网页_生日快乐粒子烟花(自定义文字)_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码