JDK8新特性

JDK8新特性

Stream流

Lambda表达式详解
接口只有一个抽象方法时使用,在接口上加@FunctionalInterface,作用是检查是否符合函数式接口,语法形式为Interface<> lambda = () -> {},Interface是接口类型,<>可以类型推断,方法形参不用写类型,() 是方法形参,{}是方法体,-> 叫箭头操作符
如果方法形参只有只有一个,小括号可以省略,如果方法体只有一条语句,大括号可以和return可以省略
Java四大内置函数式接口

Consumer<\T> 消费型接口,void accept(T t);
Supplier<\T> 供给型接口,T get();
Function<T,R> 函数型接口,R apply(T t);
Predicate<\T> 断言型接口,boolean test(T t);

方法引用:若lambda方法体的内容有方法已经实现了,可以使用方法引用
三种语法格式:
对象::实例方法名
类::静态方法名
类::实例方法名

语法要求:方法的参数类型和返回值类型要和函数式接口的抽象方法一致
若lambda参数中的第一个参数是实例方法的调用者,而第二个是实例方法的参数时,可以使用ClassName::method,比如接口<类> test = (x,y) -> x.equals(y);可以直接写成<数据类型> test = 类::equals;
构造器引用:ClassName::new,要求构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致
数据引用:Type[]::new;

经过Lambda体的变量会被final修饰,无法被修改

Stream流使用的三个步骤:
1.开始操作,创建Stream
2.中间操作
3.终止操作,如果没有终止操作,中间操作是不会执行的

开始操作
创建流的方式:通过Collection系列集合提供的stream(),通过数组Arrays提供的静态方法stream(数组引用),通过Stream类的静态方法of(),通过Stream.iterate()

中间操作
filter方法:接收Lambda,筛选出满足条件的元素
limit方法:截断流,获取x条数据
skip方法:跳过x条元素,若是元素不足x,返回空,与limit互补
distinct方法:去重,要求类重写equals和hashCode方法
map方法:接收Lambda,方法体会被应用到每个元素上,映射成一个新的元素
flatMap方法:跟map一样,区别在于,如果有List类,会将List类的所有属性一个一个的映射,而不是全部打包一起映射
sorted方法(Comparable):自然排序
sorted(Comparator com):定制排序

结束操作
allMatch:判断是否匹配所有元素
anyMatch:判断是否匹配一个元素
noneMatch:判断是否没有匹配所有元素
findFirst:获取第一个元素
findAny:获取任意元素
count:获取元素总数
max:获取元素最大值
min:获取元素最小值
reduce:归约,可以将元素反复结合起来,获取值,谷歌搜索就是用的map-reduce模式
forEach:内部迭代
collector(Collectors.xxx):将流转换成其他形式,toList,toSet,toCollection(HashSet::new),max,min,sum,avg…group by…
在这里插入图片描述
在这里插入图片描述

Optional类

在这里插入图片描述

LocalDateTime

时间类LocalDateTime的使用

LocalDateTime.parse(tradeDO.getSubmitTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
                .getMonthValue() != LocalDateTime.now().getMonthValue()

代码分析

LocalDateTime对象是操作时间的对象,parse方法可以将字符串解析成我们想要的日期格式,tradeDO.getSubmitTime()获取表的字符串类型时间,DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”)将字符串时间解析成这个格式,结果返回的是LocalDateTime对象,getMonthValue方法获取表时间的当前月份,LocalDateTime.now().getMonthValue()获取当前时间的当前月份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值