Lambda表达式

自己写的一个Lambda表达式简单应用:

interface MyInterface{
    public String combine(String a,String b);


}

public class LambdaTest {
    @Test
    public void test1(){
        MyInterface mi=(a,b)->a+b;
        String a="Lamdbe";
        String b=" Test";
        String combine = mi.combine(a, b);
        System.out.println(combine);

    }
}

有scala,python内味了
image.png

函数式接口

java.util.function包下定义了许多函数接口
一个接口中之声明了一个抽象方法,成为函数式接口
image.png

方法引用和构造器引用

相当于一种语法糖
方法引用和构造器引用演示
方法引用的一个简单实现

interface MyInterface{
    public String combine(String a,String b);


}

 class E{
        String plus(String a,String b){
            return a+b;

        }
    }
    @Test
    public void test2(){
        E e = new E();
        MyInterface mi=e::plus;
        String a="Lamdbe";
        String b=" Test";
        String combine = mi.combine(a, b);
        System.out.println(combine);

    }

StreamAPI

先初步理解为,在java层面实现一些数据库的逻辑

Stream的实例化

Stream的中间过程演示

中间过程包括切片与筛选;映射;排序

终止操作

终止过程包括匹配与查找;归约;收集(Collector是由collectors类的静态方法调用的)

Optional类

为了避免空指针异常,Google公司率先引用Optinal,SUN公司发现了其好用指出引进jadk8中
应用实例:

//Optional类
    //为了在程序中避免空指针创建的
    public int getBoyAge(Boy b){
        Optional<Boy> b1 = Optional.ofNullable(b);//ofNullable表示允许里面对象为空
        Boy boy = b1.orElse(new Boy());
        return boy.age;
    }
    @Test
    public void test3(){
        Boy b =new Boy();
        b=null;//此时会出现空指针异常,引入Optional可以避免
        System.out.println(getBoyAge(b));
    }

class Boy{
    int age=18;
    Boy(){
        this.age=111;
    }
}

Q.E.D.