JDK8新特性
2020-09-04 10:22:28 0 举报
AI智能生成
JDK8新特性
作者其他创作
大纲/内容
JDK8新特性
函数式接口
概念:当一个接口有且只有一个抽象方法时,该接口为函数接口
注解:@FunctionalInterface
Lambda表达式
前提:必须是在函数式接口中使用
格式:
完全格式
(形参列表) -> { 方法体 }
简化格式1: 当参数只有一个
m ->{方法体}
可以省略()
简化格式2:当方法体只有一条语句
(形参列表) -> 一条语句
可以省略{}
简化格式3:当方法有返回值并且只有一条语句
(形参列表) -> 省略retrun关键词和{} 必须同时省略
注意:lambda表达式 和接口的抽象方法名没有关系。 参数的类名没有体现
使用:
接口名 引用 = Lambda表达式
方法引用
前提:必须是函数式接口作为类型,来存储方法引用
本质:就是将方法体作为一个可以存储的内容。并且进行赋值给 函数式接口
格式:
非静态方法
对象名::方法名
静态方法
类名::静态方法名
特点:方法名后面不可以跟() 更没有参数列表
内置函数式接口
消费型接口
接口名: Consumer<T>
抽象方法:void accept(T t)
方法的特点:有一个参数没有返回值
供给型接口
接口名: Supplier<T>
抽象方法:T get();
方法的特点:没有参数,但有返回值
函数型接口
抽象方法: R apply(T t)
方法的特点:有一个参数,同时有返回值
断言型接口
接口名: Predicate<T>
抽象方法: boolean test(T t)
方法的特点:有一个参数,返回值类型是boolean
Streaming API
作用:针对单列集合,提供了一个Stream类型,可以对集合中的元素进行处理
优点:避免了对于集合中元素的遍历
获取stream类型的方式
Collection
Map
通过将双列集合转变为单列集合之后,再调用stream方法
数组
通过Stream类型中的静态方法 of()
说明:数组中的元素作为可变参数传入方法中
常用方法
延续方法
调用完成之后,返回值依然是Stream类型,可以继续调用Stream类中的方法
具体方法
Stream<T> filter(Predicate<? super T> predicate)
过滤元素
Stream<T> limit(long maxSize)
截取
Stream<T> skip(long n)
跳过
Stream<T> sorted()
排序
终结方法
调用完成之后,返回值不是stream类型。无法继续调用stream类中的方法
void forEach(Consumer<? super T> action)
遍历 (经常用于打印)
long count()
显示元素个数
0 条评论
回复 删除
下一页