函数式接口、Stream

一、函数式接口

1.1 Lambda表达式

1.1.1 作用

        用来简化匿名内部类

1.1.2 语法

        ( )->{ }

1.2 函数式接口

1.2.1 注意

        当lambda表达式为参数的实参时,形参九必须为一个函数式接口作为形参

1.2.2 分类

        Consumer<T> 消费型接口(有参数无返回值)        void accept(T t)

        Function<T,R>函数式接口(有参数有返回值)        R apply(T t)

        Supplier<T>   供给型接口(无参数有返回值)           T get()

        Predicate<T>  断言型接口(一个参数一个返回boolean)  boolean test(T t)

1.3 方法引用

1.3.1 作用

        用于简化 lambda 表达式,是lambda表达式的另外一种表达形式

1.3.2 前提

        1)当lambda表达式的lambda体中的实现已经在另外一个方法中实现了,只需在lambda体中调用另一个方法 -> 可以通过方法引用那个方法

        2)lambda表达式重写的方法的参数列表与返回值要与内部引用的参数列表与返回值一一对应

        3)lambda返回值与内部所调用方法的方法直接对应,lambda的参数列表的第一个参数作为内部调用成员方法的对象存在,lambda的第二到多个参数直接匹配内部所调用方法的参数列表存在。

1.3.3 分类

对象::成员方法

        要求:lambda表达式重写的抽象方法的参数列表与返回值对应内部所引用方法的参数列表与返回值一一对应

类名::静态方法

        要求:lambda表达式重写的抽象方法的参数列表与返回值对应内部所引用方法的参数列表与返回值一一对应

类名::成员方法

        要求:lambda的返回值与内部所调用方法的方法直接对应,lambda的参数列表的第一个参数作为内部调用成员方法的对象存在,lambda的第二到多个参数直接匹配内部所调用方法的参数列表存在。

二、Stream

2.1 定义

        在Java8中的stream 是关注流式运算,并不是进行数据传输和存储的,

其中:io流关注数据的存储、集合与数组关注数据的存储

2.2 注意

        1)Stream是一次性的流,在一次使用过后就不能重复使用

        2)Stream的操作不会影响数据源中的数据

        3)这是一种延迟执行(惰性加载):当获取终止行为的时候才会执行中间操作

2.3 使用步骤

        1)创建、获取Stream流

        2)中间行为

        3)终止行为

2.4 创建Stream的方式

        1)Collection Stream<E> stream( )

        List<Integer> list = List.of(1,2,3,4,5);
        Stream<Integer> stream = list.stream();
        stream.forEach(System.out::println);

        2)Arrays stream()

        String[] arr = {"abc","bbb","ccc"};
        Stream<String> stream1 = Arrays.stream(arr);
        stream1.forEach(System.out::println);

        3)Stream of

        Stream<Integer> stream2 = Stream.of(3,2,1);
        stream2.forEach(System.out::println);

2.5 中间操作

2.5.1 一些常用的方法

        1)过滤        Stream<T> filter(Predicate<? super T> predicate);

        2)去重        Stream<T> distinct()

        3)截取        Stream<T> limit(long maxSize)

        4)跳过        Stream<T> skip(long)

        5)排序        sorted() | sorted(Comparator<? super T> comparator)

        6)映射         map(Function) :接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。

2.5.2 注意

        中间操作都会返回一个具有结果的新的流

三、终止行为

3.1 规约

        reduce

3.2 查找

        find

3.3 匹配

        match

3.4 收集

        collect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值