Java之 1.8新特性
Posted 悠悠一小生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之 1.8新特性相关的知识,希望对你有一定的参考价值。
1.Lambda表达式
使用前提
1.必须是函数式接口
2.必须参数和局部变量等等都要一一对应
标准格式
(参数类型 参数名)->{ 方法体}():方法的参数 没有则不写 如果多个 ,隔开
->:代表指向动作
{}:重写方法 方法体的内容
省略格式规则
1.参数类型可以省略 (Person p) (p)
2.如果只有一个参数 ()可以省略 (Person p) p
3.如果方法体中只有一条语句 {} return ;都可以省略 但是如果省略 必须全部省略
2.函数式接口
定义:只有一个抽象方法的接口(但是可以有其他方法 例如 私有 静态 默认)
可以使用@FunctionalInterface来验证一个接口是否是函数式接口 是 不报错 不是报错
常用的4个函数式接口
Supplier<T>接口 生产型接口
T get() 获取一个指定泛型数据类型的数据
Consumer<T>接口 消费型接口
void accept(T t) 对指定泛型类型的数据进行消费(处理)
andThen一步接一步 操作的是多个Consumer对象
Function<T,R>接口 类型转换的接口
R apply(T t) 根据T类型的数据获取R类型的结果
andThen一步接一步 操作的是多个Function对象
Predicate<T> 接口 判断型接口
boolean test(T t) 对传入的参数可以进行判断返回boolean类型结果
and,or,negate 并且 或者 取反
3.方法引用
对象名引用成员方法
对象名::方法名
Assistant a = new Assistant();
a::dealFile
类名引用静态方法
类名::静态方法名
Integer::parseInt
类名引用构造方法
类名::new
Person::new
数组引用构造
int[]::new
String[]::new
4.Stream流
获取流
1.Collection的stream()方法
2.Stream的静态方法of(T...t)
forEach(Consumer<T> con)
对流中的元素逐一处理 我们通常都是打印 遍历 终结方法只能调用一次
long count()
Stream中元素的个数 终结方法只能调用一次
limit(long n)
获取前n个元素 返回Stream对象
skip(long n)
跳过前n个元素 返回Stream对象
filter((Predicate<T> predicate)
过滤条件
map(Function<T,R> f)
将一种类型的Stream转换为另一种类型的Stream
static Stream concat(Stream s1 ,Stream s2)
静态方法 将两个流合并成一个流
将Stream转换为集合
List<String> list = stream.collect(Collectors.toList());
Set<String> set = stream.collect(Collectors.toSet());
将Stream转换为数组
Object[] objArray = stream.toArray();
String[] strArray = stream.toArray(String[]::new);
以上是关于Java之 1.8新特性的主要内容,如果未能解决你的问题,请参考以下文章