Java8新特性
Java8新特性
接口中默认方法修饰为普通方法
在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,由于这些修饰符都是默认的
在JDK 1.8开始 支持使用static和default 修饰 可以写方法体,不需要子类重写。
方法:
普通方法 可以有方法体
抽象方法 没有方法体需要子类实现 重写。
Lambda表达式
lambda好处:简化匿名内部类的调用
使用lambda 表达式依赖于函数接口
1.在接口中只能够允许有一个抽象方法
2.在函数接口中定义object类中方法(方便实现类重写例如toString方法)
3.使用默认或者静态方法
4.@FunctionalInterface 标识该接口为函数式接口
() 参数列表
—> 分割
{} 方法体
(a,b)->{
}
Stream流
stream: 非常方便精简的形式遍历集合实现过滤,排序等。
.stream() 串行流
.parallelStream() 并行流
stream.collect(Collectors.toSet()) list集合转set集合(去重必须重写类中的equals方法)
list集合转map集合
stream.collect(Collectors.toMap(new Function<UserEntity, String>() {
@Override
public String apply(UserEntity userEntity) {
return userEntity.getUserName();
}
}, new Function<UserEntity, UserEntity>() {
@Override
public UserEntity apply(UserEntity userEntity) {
return userEntity;
}
}));
Reduce 求和
integerStream.reduce((a1, a2) -> a1 + a2);
System.out.println(reduce.get());
Stream Max和Min
stream.max((o1, o2) -> o1.getAge() - o2.getAge());
anyMatch表示,判断的条件里,任意一个元素成功,返回true
allMatch表示,判断条件里的元素,所有的都是,返回true
noneMatch跟allMatch相反,判断条件里的元素,所有的都不是,返回true
filter()过滤器
排序sorted
limit分页skip跳过
方法引入
方法引入:需要结合lambda表达式让代码更加精简
1.静态方法引入:
2.对象方法引入:
3.实例化方法引入:
4.构造方法引入:
类型 | 语法 | 对应lambda表达式 |
---|---|---|
构造器引用 | Class::new | (args) -> new 类名(args) |
静态方法引用 | Class::static_method | (args) -> 类名.static_method(args) |
对象方法引用 | Class::method | (inst,args) -> 类名.method(args) |
实例方法引用 | instance::method | (args) -> instance.method(args) |
JDK8Optional
ofNullable(可以传递一个空对象)
Of(不可以传递空对象)
isPresent true 不为空 isPresent返回 false 为空
orElse参数为空可以设定默认值
orElseGet 参数为空设置属性值
- 点赞
- 收藏
- 关注作者
评论(0)