JDK1.8新特性
Stream 流式运算
Stream流式思想可以理解为车间的生产线,Stream不是一种数据结构,不会保存数据,而是对数据进行加工处理。不会改变数据源。中间方法是懒加载,如果没有结束方法是不会执行中间方法的。Stream是一次性操作,当结束方法执行完成后,代表加工完成了,Stream就无法再进行其他操作了。**parallelStream(并行流)**也就是有多条生产线的车间,他的效率比Stream(串行流)高,但是处理顺序就不能保证了。Stream流式运算基于Lambda表达式,提高了代码可读性。
Lambda表达式
Lambda表达式基于函数式接口,以极大地减少代码冗余,并提高代码的可读性。
函数式接口
只包含一个抽象方法的接口,称为函数式接口。可以通过Lambda 表达式来创建该接口的对象,并指定实现方式。@FunctionalInterface注解可以检查是否是一个函数式接口。
内置四大核心函数式接口:
项目 | Value | 返回类型 | 用途 |
---|---|---|---|
Consumer 消费型接口 | T | void | 对类型为T的对象应用操 作,包含方法: void accept(T t) |
Supplier供给型接口 | 无 | T | 返回类型为T的对象,包 含方法:T get(); |
Function<T, R> 函数型接口 | T | R | 对类型为T的对象应用操 作,并返回结果。结果 是R类型的对象。包含方 法:R apply(T t); |
Predicate 断定型接口 | T | boolean | 确定类型为T的对象是否 满足某约束,并返回 boolean 值。包含方法 boolean test(T t); |
方法引用
目的支持Lambda表达式简写
// 原始写法
list.forEach((s) -> System.out.println(s));
// 方法引用写法
list.forEach(Syetem.out::println);
日期时间 API
LocalDate,LocalTime,LocalDateTime等,加强对日期与时间的处理。