jdk8新特性小总结

jdk8新特性

lambda表达式

Lambda 是一个匿名函数,可以把 Lambda 表达式理解为是一段可以传递的代码

Lambda 表达式的本质:作为函数式接口的实例

lambda左边 就是接口里面抽象方法的参数。

lambda右边 就是对接口抽象方法体的重写。

参数类型给定到泛型上

Lamdba若只需要一个参数时,小括号可以省略

当Lamdba体只有一条语句时,return和大括号若有,都可以省略

 		Comparator comparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };
        System.out.println(comparator.compare(1, 2));

        //lambda写法
        Comparator c = (o1, o2) -> {
            return 0;
        };
        Comparator<Integer> c2 = (o1, o2) ->  o1-o2;
函数式接口

只包含一个抽象方法的接口,称为函数式接口。接口上用@FunctionalInterface标识

四大核心函数式接口
在这里插入图片描述

方法的引用

方法引用可以看做是 Lambda 表达式深层次的表达。换句话说,方法引用就是 Lambda 表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法。

类(或对象) :: 方法名

要求接口中的抽象方法的 形参列表返回值类型 与方法引用的方法的形参列表和返回值类型相同!

//Consumer void accept(T t)
//PrintStream  void println(T t)
PrintStream ps=System.out;
Consumer con1= ps :: println;
  • 情况1 对象 :: 非静态方法
  • 情况2 类 :: 静态方法
  • 情况3 类 :: 非静态方法

当函数式接口方法的第一个参数是需要引用方法的调用者,并且第二个参数是需要引用方法的参数(或无参数)时:ClassName::methodName(针对于情况3)

构造器和数组的引用

方法引用:类名 ::new 和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致。抽象方法的返回值类型即为构造器所属的类的类型

数组引用:数组类型 [] :: new 可以把数组看做是一个特殊的类,则写法与构造器引用一致。

StreamAPI
  • Stream 关注的是对数据的运算,与 CPU 打交道;集合关注的是数据的存储,与内存打交道;
  • Java 8 提供了一套 api ,使用这套 api 可以对内存中的数据进行过滤、排序、映射、归约等操作。类似于 sql 对数据库中表的相关操作。
  • Stream 是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据, Stream讲的是计算!”

创建方法

  1. 通过集合
  2. 通过数组
  3. Stream.of()方法
中间操作

筛选与切片

在这里插入图片描述

映射
在这里插入图片描述

排序
在这里插入图片描述

终止操作

匹配雨查找

归约

收集

Optional 类的使用

为了解决 java 中的空指针问题而生!

Optional<T> 类(java.util.Optional) 是一个容器类,它可以保存类型 T 的值,代表这个值存在。或者仅仅保存 null,表示这个值不存在。原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。

常用方法
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值