26.jdk8接口特性、lambda表达式、函数型接口、Stream

一、jdk8与jdk9接口新特性

1.1简介

在jdk1.8之后 接口不仅可以有抽象的方法,还可以有其他方法

增加的方法

        jdk8:默认的方法和静态的方法

        jdk9:私有的方法

3.影响:接口中可以有其他的成员方法 接口与抽象类的差距缩小 接口多继承多实现  使用接口是趋势

1.2默认的方法

1.使用default修饰的方法就是默认的方法

2.语法:

访问修饰符 default 方返回值类型 方法的名称(参数列表){

        方法体

        返回值

}

3.特点:

接口中的默认方法实现类不能重写

实现类的其他方法可以调用接口中的默认方法,

调用语法是 接口的名称.super.方法的名称()

1.3静态方法

1.使用static来修饰的方法就是静态方法

2.语法:

 访问修饰符 static 方法返回值类型 方法的名称(参数列表){

        方法体

        返回值

}

3.特点:接口的实现类不能重写接口中静态方法

 1.4私有方法

1.使用private修饰方法 只有jdk1.9之后才能使用

2.语法:

 private 方法返回值类型 方法名称(参数列表){

        方法体

        返回值

}

3.注意点:

私有的方法可以使用默认的方法来调用

私有的静态方法只能是默认方法与静态方法调用

 二、lambda表达式

2.1简介

1.本质:是一个匿名的函数型接口

2.函数型接口:接口中只能有一个抽象方法,可以有其他的方法

3.作用:简化匿名内部类的写法

4.语法:(参数)->{方法体}

5.Lambda表达式简化方式

        1.如果方法只有一个参数 小括号和数据类型可以省略

        2.如果方法体中只有一句话没有return的话就可以省略大括号和分号

        3.如果方法体 只有一句话 且这话是return的话就可以省略掉大括号 和r分号以及return

 三、函数型接口

1.概念:接口中只能有一个抽象方法,可以有默认方法,以及其他方法

2.注解:@FunctionalInterface 用来检查是否是函数型接口

3.函数型接口:作为方法的参数和作为方法的返回值

 四、jdk8中四个函数型接口

4.1Supplier供给型接口

4.2 Consumer消费型函数接口

 4.3Predicate断言型函数接口

 4.4Function转换型函数接口

 五、Stream

5.1简介

1.Stream 是一个接口主要是对数据进行过滤
2.Stream 提供了两类方法:延迟方法和终结方法

延迟方法:Stream调用之后还是Stream对象 还可以继续使用其方法、

终结方法:Stream调用方法字符返回值不是Stream对象 不可以继续使用其方法

5.2 获取Stream对象

 Collection.strem() 

Stream of(T...values)

一个是Collection的方法,一个是Stream的方法

5.3常用的方法

 5.4案例

public class Test {
    public static void main(String[] args) {
        List<String> list01=new ArrayList<>();
        List<String> list02=new ArrayList<>();
        List<Person> li=new ArrayList<>();
        Collections.addAll(list01,"宫本武藏","宋公明","苏有朋","石头人","时传详","李 耳","庄子","洪七公");
        Collections.addAll(list02,"帕瓦罗蒂","张三疯","赵薇薇","张自忠","孛儿只斤铁木 真","张天爱","张翠花");
        Stream.concat(list01.stream().filter(s -> s.length()==3).limit(3),list02.stream().filter(s -> s.substring(0,1).equals("张")).skip(2)).map(s -> new Person(s)).forEach(p-> li.add(p));
        System.out.println(li);
    }
}
public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public Person() {
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值