JDK1.8新特性
2017-11-27 22:01
211 查看
JDK1.8新特性
1. Lamnda表达式:
1.1 定义:带有参数变量的表达式,是一段可以传递的代码,可以被执行一次或多次
1.2 格式:(参数)->表达式或方法体
(1) 参数:类似于方法中的形参列表,这里的参数是函数式接口里的参数
(2) ->:可以理解为被用于的意思
(3) 表达式:可以是表达式也可以是代码块,是函数式接口里方法的实现
1.3 函数式接口
(1)功能型接口:Function
Function<T,R>:是对接受一个T类型参数,返回R类型的结果的方法的抽象,通过调用apply()方法进行执行内容
(2)消费型接口:Consumer
Consumer<T>:接收一个参数,没有返回值,通过accept()对参数执行行为
(3)供给型接口:Supplier
Supplier<T>:该接口对应的类型不接受参数,但是提供一个返回值,使用get()方法获取到这个返回值
(4)断言型接口:Predicate
Predicate<T>该接口对应的方法为接收一个参数,返回一个Boolean类型的值,多用于判断与过滤,通过test()执行行为
1.4 Lambda表达式的优点
(1)减少代码冗余,可读性好
(2)与集合类批处理操作结合,实现内部迭代,并充分利用现代多核CPU进行并行计算
1.5 和匿名内部类的区别
(1)在Lambda表达式中,this不是指向Lambda表达式产生的那个对象,而是它的外部对象
(2)Java编译器编译Lambda表达式并将它们转换为类里面的私有函数
1.6 方法引用
某些Lambda表达式里面仅仅是调用了一个已存在的方法,在这种情况下直接通过方法名称引用方法的形式可读性更高些,这种形式就是方法引用
格式:方法引用中::后只能是方法名,不能加();
2. Stream流
2.1 定义:是用函数式编程的方式在集合类上进行复杂操作的工具,和迭代器不同的是,Stream可以并行化操作,借助于Lambda表达式极大的提高了编程效率和可读性
2.1 常用操作
(1) foreach():迭代集合中的元素
(2) collect(tolist()):由Stream里的值生成一个列表,是一个及早求值操作
(3) map():如果有一种函数将一种类型的值转换为另一种类型,map操作就可以使用该函数,将一个流中的值转换成一个新的流
(4) filter():遍历数据并检查其中元素
(5) flatMap():可用多个Stream替换值,然后将多个Stream连接成一个Stream
(6) max()和min():获取Stream中的最大值和最小值
(7) reduce():通过指定的函数把Stream中的多个元素汇聚为一个元素
1. Lamnda表达式:
1.1 定义:带有参数变量的表达式,是一段可以传递的代码,可以被执行一次或多次
1.2 格式:(参数)->表达式或方法体
(1) 参数:类似于方法中的形参列表,这里的参数是函数式接口里的参数
(2) ->:可以理解为被用于的意思
(3) 表达式:可以是表达式也可以是代码块,是函数式接口里方法的实现
1.3 函数式接口
(1)功能型接口:Function
Function<T,R>:是对接受一个T类型参数,返回R类型的结果的方法的抽象,通过调用apply()方法进行执行内容
(2)消费型接口:Consumer
Consumer<T>:接收一个参数,没有返回值,通过accept()对参数执行行为
(3)供给型接口:Supplier
Supplier<T>:该接口对应的类型不接受参数,但是提供一个返回值,使用get()方法获取到这个返回值
(4)断言型接口:Predicate
Predicate<T>该接口对应的方法为接收一个参数,返回一个Boolean类型的值,多用于判断与过滤,通过test()执行行为
1.4 Lambda表达式的优点
(1)减少代码冗余,可读性好
(2)与集合类批处理操作结合,实现内部迭代,并充分利用现代多核CPU进行并行计算
1.5 和匿名内部类的区别
(1)在Lambda表达式中,this不是指向Lambda表达式产生的那个对象,而是它的外部对象
(2)Java编译器编译Lambda表达式并将它们转换为类里面的私有函数
1.6 方法引用
某些Lambda表达式里面仅仅是调用了一个已存在的方法,在这种情况下直接通过方法名称引用方法的形式可读性更高些,这种形式就是方法引用
格式:方法引用中::后只能是方法名,不能加();
2. Stream流
2.1 定义:是用函数式编程的方式在集合类上进行复杂操作的工具,和迭代器不同的是,Stream可以并行化操作,借助于Lambda表达式极大的提高了编程效率和可读性
2.1 常用操作
(1) foreach():迭代集合中的元素
(2) collect(tolist()):由Stream里的值生成一个列表,是一个及早求值操作
(3) map():如果有一种函数将一种类型的值转换为另一种类型,map操作就可以使用该函数,将一个流中的值转换成一个新的流
(4) filter():遍历数据并检查其中元素
(5) flatMap():可用多个Stream替换值,然后将多个Stream连接成一个Stream
(6) max()和min():获取Stream中的最大值和最小值
(7) reduce():通过指定的函数把Stream中的多个元素汇聚为一个元素
相关文章推荐
- JDK1.8新特性--Lambda 表达式
- 菜鸟记录之JDK1.8十大新特性
- java 基础 JDK各个版本的新特性1.5---1.8
- jdk 1.8的一些新特性
- 巧妙利用JDK1.8新特性解决多if判断及其性能测试
- 杰神之Java接口JDK1.8新特性
- [转]JDK1.7和JDK1.8的新特性
- JAVA 8 新特性详解-------与------- JDK 1.8 预览版 Lambda语法分析
- Java还要再学一遍基础(四)JDK1.8新特性default,static
- JDK1.8的新特性——注解Annotation更多场景的使用
- jdk1.8新特性
- jdk1.8新特性详解
- Java JDK1.8新特性
- JDK1.8 十大新特性详解
- JDK1.8的十大新特性总结
- Java JDK1.8新特性
- JDK1.8特性
- 总结:JDK1.5-JDK1.8各个新特性
- JDK 1.8新特性Lambda入门
- 【JVM】调优笔记2-----JVM在JDK1.8以后的新特性以及VisualVM的安装使用