jdk8新特性汇总

1.Lambda

2.增加时间工具类

LocalDate/LocalTime 和 LocalDateTime

几乎所有的时间对象都实现了 Temporal 接口,所以接口参数一般都是 Temporal

Instant: 表示时间线上的一个点,参考点是标准的Java纪元(epoch),即1970-01-01T00:00: 00Z(1970年1月1日00:00 GMT)
LocalDate: 日期值对象如 2019-09-22
LocalTime:时间值对象如 21:25:36
LocalDateTime:日期+时间值对象
ZoneId:时区
ZonedDateTime:日期+时间+时区值对象
DateTimeFormatter:用于日期时间的格式化
Period:用于计算日期间隔
Duration:用于计算时间间隔
TemporalAdjusters:

2.注解增强

可以进行重复注解
注解本身必须使用@Repeatable
扩展注解的支持
Java 8扩展了注解的上下文。现在几乎可以为任何东西添加注解:局部变量、泛型类、父类与接口的实现,就连方法的异常也能添加注解。

3.接口增强

接口新增默认方法与静态方法

interface Demo{
	default int test(){
		return 0;
	}
	static void demo(){}
}

Demo的方法test()实现类不必实现,对象可直接访问,静态方法可由接口直接调用,如Demo.demo()

4.流式处理

新增Stream
特性:
1.Stream流不是一种数据结构,不保存数据,它只是在原数据集上定义了一组操作。

2.这些操作是惰性的,即每当访问到流中的一个元素,才会在此元素上执行这一系列操作。

3.Stream不保存数据,故每个Stream流只能使用一次。

两个概念:流、管道。元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。这里有2个操作:中间操作、最终操作。

中间操作:返回结果都是Stream,故可以多个中间操作叠加。
终止操作:用于返回我们最终需要的数据,只能有一个终止操作。

流的生成方法
1.Collection接口的stream()或parallelStream()方法
2.静态的Stream.of()、Stream.empty()方法
3.Arrays.stream(array, from, to)
4.静态的Stream.generate()方法生成无限流,接受一个不包含引元的函数
5.静态的Stream.iterate()方法生成无限流,接受一个种子值以及一个迭代函数
6.Pattern接口的splitAsStream(input)方法
7.静态的Files.lines(path)、Files.lines(path, charSet)方法
8.静态的Stream.concat()方法将两个流连接起来

中间操作
1.filter(Predicate) :将结果为false的元素过滤掉
2.map(fun) :转换元素的值,可以用方法引元或者lambda表达式
3.flatMap(fun) :若元素是流,将流摊平为正常元素,再进行元素转换
4.limit(n) :保留前n个元素
5.skip(n) :跳过前n个元素
6.distinct() :剔除重复元素
7.sorted() :将Comparable元素的流排序
8.sorted(Comparator) :将流元素按Comparator排序
9.peek(fun) :流不变,但会把每个元素传入fun执行,可以用作调试
终结操作
a、约简操作
1.reduce(fun) :从流中计算某个值,接受一个二元函数作为累积器,从前两个元素开始持续应用它,累积器的中间结果作为第一个参数,流元素作为第二个参数
2.reduce(a, fun) :a为幺元值,作为累积器的起点
3.reduce(a, fun1, fun2) :与二元变形类似,并发操作中,当累积器的第一个参数与第二个参数都为流元素类型时,可以对各个中间结果也应用累积器进行合并,但是当累积器的第一个参数不是流元素类型而是类型T的时候,各个中间结果也为类型T,需要fun2来将各个中间结果进行合并
b、收集操作
1.iterator():
2.forEach(fun):
3.forEachOrdered(fun) :可以应用在并行流上以保持元素顺序
4.toArray():
5.toArray(T[] :: new) :返回正确的元素类型
6.collect(Collector):
7.collect(fun1, fun2, fun3) :fun1转换流元素;fun2为累积器,将fun1的转换结果累积起来;fun3为组合器,将并行处理过程中累积器的各个结果组合起来

查找与收集操作
1.max(Comparator):返回流中最大值
2.min(Comparator):返回流中最小值
3.count():返回流中元素个数
4.findFirst() :返回第一个元素
5.findAny() :返回任意元素
6.anyMatch(Predicate) :任意元素匹配时返回true
7.allMatch(Predicate) :所有元素匹配时返回true
8.noneMatch(Predicate) :没有元素匹配时返回true

5.引入Optional

Optional为一个容器,可缓解经常遇到的空指针问题

6.引入Base64

新增Base64工具类

7、增强方法引用

直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,减少冗余代码
1、构造器引用,它的语法是Class::new,或者更一般的Class< T >::new。请注意构造器没有参数
2、静态方法引用,它的语法是Class::static_method。请注意这个方法接受一个Car类型的参数
3、特定类的任意对象的方法引用,它的语法是Class::method。请注意,这个方法没有参数。
4、特定对象的方法引用,它的语法是instance::method。请注意,这个方法接受一个Car类型的参数

8、并发

atomic包以及其他包中还增加了下面这些类:

  1. DoubleAccumulator
  2. DoubleAdder
  3. LongAccumulator 收集统计数据
  4. LongAdder LongAccumulator 的一种特例 收集统计数据,高吞吐量,不适合细粒度的同步控制
  5. CompletableFuture

新增StampedLock用以代替ReadWriteLock

9、引用增强

静态方法引用:ClassName::methodName
实例上的实例方法引用:instanceReference::methodName
超类上的实例方法引用:super::methodName
类型上的实例方法引用:ClassName::methodName
构造方法引用:Class::new
数组构造方法引用:TypeName[]::new

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值