1.Lambda表达式
1.Lambda表达式
语法糖 也叫作糖衣语法,增强了代码的可读性 避免了出错的机会
但是,这种语法对于语言的功能并没有增强
和Lambda一样的糖衣语法还有:(1)泛型 <>(2)自动装箱拆箱(3)增强for循环
基本格式
(参数列表)->{方法体};
解释:
1. "->" 表示 转为/成为左边指定输入的参数 右边是Lambda的方法主体
注意:
1. 只有是函数接口(当一个接口中 只包含一个方法时 该接口叫做函数接口) 才能使用Lambda表达式替换
格式:
()->{}
1.(参数列表)->表达式
花括号可省略 省略后 不能书写return关键字
2.形参列表的类型声明 可省略 java在编译的时候 会根据上下文 自动推断出参数类型
3.小括号可省略 形参列表是一个的时候可省略
4.return关键字
如果是单一表达式 可不写
如果写了return 就必须写花括号
2.Lambda表达式的基本应用
2.1 线程中的使用
2.2 forEach方法在集合中的使用
Iterable 1.8新增方法
default void forEach(Consumer<? super T> action)
Map 1.8新增方法
default void forEach(BiConsumer<? super K,? super V> action)
2.3 集合的排序
List集合出现自有的排序方法sort() 可根据Comparator比较器顺序进行排序
2.4 数组的排序
2.5 特殊的双冒号:: 方法引用
这是java8的Lambda表达式写法 叫做方法引用 (method references)
是Lambda的简写形式
注意:
1.是Lambda的简写形式
2.调用一个已存在的方法
3.当我们需要引用的方法传入其他类型参数的时候 不适合
语法:
左边是容器(类名/实例名)
中间::
右边是要调用的方法名
1.非静态方法调用
对象的引用::方法名
想要调用该对象所属类的一个已存在方法
p::getName;
2.静态方法调用
类名::方法名
3.构造方法调用
类名::new

2.局部内部类中变量的修饰符
final修饰符可省略
内部类在访问 它所在的方法中的变量时 该变量必须是常量(被final修饰的)
jdk1.8之后 省略了final修饰符 但是本质上该变量还是final的
3.Stream接口
和Iterator很像
Stream (流) 和 InputStream/OutputStream 没有关系
创建一个Stream 需要指定一个数据源 比如Collection的子类
List 和 Set 支持,Map不支持
3.1去重

3.1是否包含

3.3排序

3.4返回第一个元素

3.5最大最小

3.6将stream转为list集合
1.Lambda表达式的更多相关文章
- 你知道C#中的Lambda表达式的演化过程吗?
那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂. 委托的使用 例一: 什么是委托? 个人理解:用来传递方法的类型.(用来传递数字的类型有int.float ...
- Linq表达式、Lambda表达式你更喜欢哪个?
什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在& ...
- 背后的故事之 - 快乐的Lambda表达式(一)
快乐的Lambda表达式(二) 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能 ...
- Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)
作者:Antonio Leiva 时间:Jan 5, 2017 原文链接:https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式 ...
- java8中lambda表达式的应用,以及一些泛型相关
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...
- 背后的故事之 - 快乐的Lambda表达式(二)
快乐的Lambda表达式 上一篇 背后的故事之 - 快乐的Lambda表达式(一)我们由浅入深的分析了一下Lambda表达式.知道了它和委托以及普通方法的区别,并且通过测试对比他们之间的性能,然后我们 ...
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Lambda 表达式递归用法实例
注意: 使用Lambda表达式会增加额外开销,但却有时候又蛮方便的. Windows下查找子孙窗口实例: HWND FindDescendantWindows(HWND hWndParent, LPC ...
- Spark中Lambda表达式的变量作用域
通常,我们希望能够在lambda表达式的闭合方法或类中访问其他的变量,例如: package java8test; public class T1 { public static void main( ...
- 释放Android的函数式能量(I):Kotlin语言的Lambda表达式
原文标题:Unleash functional power on Android (I): Kotlin lambdas 原文链接:http://antonioleiva.com/operator-o ...
随机推荐
- js 实现手风琴
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JSP最终学习笔记
一.jsp基础1.JSP概念 Servlet是j2ee提供的动态资源开发技术,是以java的程序的形式进行开发,在java中书写HTML标签是一件十分头疼的事情,所以人们开发出了JSP,看起来像是HT ...
- struts2和springmvc比较1
其实都是ssh只是一个是struts2+spring3.0+hibernate,而另外一个是 springmvc+spring3.0+hibernate,纵向来看比较struts2和springmvc ...
- container/injection简介以及发展历史
一:什么是Container?Container的作用? 容器是一个标准的软件单元,它将代码及其所有依赖关系打包,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境.container的主要作用 ...
- CentOS7安装Ceph
CentOS 7 下安装Ceph-nautilus 本问主要记录在CentOS 7下如何安装Ceph-nautilus,安装过程中遇到的一些问题及解决方法. 实验准备 以下是本次实验所用到的机器(采用 ...
- 【转】Android Monkey 命令行可用的全部选项
常规 事件 约束限制 调试 原文参见:http://www.douban.com/note/257030384/ 常规 –help 列出简单的用法. -v 命令行的每一个 -v 将增加反馈信息的级别. ...
- 从VR泛滥到倒闭看热门投机的山寨创业心态
相对国外来说,国人的从众心理非常严重.无数的段子和"名人名言"都在反复向我们传递出一个信息:国人在做事的时候,总是随大流,趋向热点.而从行业角度来看,结果就会造成行业中良莠不齐.鱼 ...
- yii批量数据插入
yii框架批量插入数据有两种方法,第一种是循环多次插入和一次批量插入,第一种方法要注意插入数据中间有一次数据插入失败要注意回滚事务 循环插入数据 第一种方法 $model = new User(); ...
- C++扬帆远航——3(打印图形)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:tuxing.cpp * 作者:常轩 * 完成日期:2016年3 ...
- 软件工程实验一 Git代码版本管理
实验一 GIT 代码版本管理 一.实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 二.实验内容: 1)安装git: 2)初始配置git ,gi ...