jdk8总结

jdk8的十大新特性

stream初体验

λ表达式有三部分组成:形参列表,箭头(->),以及一个表达式或语句块。

在 Java 8 之前,匿名内部类,监听器和事件处理器的使用都显得很冗长,代码可读性很差,Lambda 表达式的应用则使代码变得更加紧凑,可读性增强;Java8为集合类引入了另一个重要概念:stream,流的API设计使用了管道(pipelines)模式。对流的一次操作会返回另一个流。

新的东西

1、参考https://github.com/changhf/stream1,熟练使用Predicate,Consumer,Optional,Function,Supplier几个接口

2、java.util.Time包下API包括LocalDate,LocalTime,LocalDateTime,ZoneId,DateTimeFormatter,Period

用法介绍

一、λ表达式与方法引用的对比

1、静态方法引用:

Converter<String, Integer> converter = Integer::valueOf;

Integer converted = converter.convert("123"); 

2、对象的方法引用:

converter = something::startsWith;

String converted = converter.convert("Java");

3、构造函数的引用,Java编译器会自动根据PersonFactory.create方法的签名来选择合适的构造函数。

PersonFactory<Person> personFactory = Person::new;

Person person = personFactory.create("Peter", "Parker");

Stream.generate(new Supplier<Double>() {
    @Override
    public Double get() {
        return Math.random();
    }
});
Stream.generate(() -> Math.random());
Stream.generate(Math::random);

方法引用使用场景:静态方法引用、实例方法引用、构造器引用 (Integer::parseInt  System.out::print   Person::new)

二、转换与汇聚

1、在对于一个 Stream 进行多次转换操作,转换操作都是 lazy 的,多个转换操作只会在 Terminal 操作的时候融合起来,一次循环完成。

2、汇聚操作把序列中的元素合并成一个汇总的结果

Java8还提供了工具类Collectors

Collectors.toList()收集到List中;Collectors.toSet()收集到Set中

List<Integer> numsWithoutNull = nums.stream().filter(num -> num != null).collect(Collectors.toList());

Java 8 中的 Stream 是对集合(Collection)对象功能的增强,Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势

Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。

二、Optional的用法:
怎样创建一个Optional对象,基本的规则很简单:

//如果我们知道自己要封装的对象是一个空对象
 Optional.absent();
//如果封装的对象是一个非空对象,则可以用
 Optional.of(obj);
//如果不知道对象是否为空,就这样创建
 Optional.fromNullable(obj);

有时候,当一个对象为null的时候,我们并不是简单的忽略,而是给出一个缺省值,比如找不到这个人,任务就交给经理来做。

 Optional person = people.find("John Smith");
 person.or(manager).doSomething()

说白了,Optinal是给了我们一个更有意义的“空”。

参考:java中匿名内部类总结

30分钟入门Java8之方法引用  http://www.importnew.com/14841.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值