您的位置:首页 > 编程语言 > Java开发

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中的多个元素汇聚为一个元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: