Day14 函数式接口&Stream流1.1 函数式接口概述 函数式接口:有且仅有一个抽象方法的接口 Java中函数编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口 只有确保接口中有仅只有一个抽象方法,Java中的Lambda才能书里的进行推导 函数式接口确认方法:@FunctionalInterface ps:建议加上注解 1.2 函数式接口作为方法的参数如果方法的参数是一个函数式接口,使用Lambda表达式作为参数传递 1.3 函数式接口作为方法的返回值如果方法的返回值是一个函数式接口,使用Lambda表达式作为参数传递 1.4 常用的函数式接口Supplier接口 Consumer接口 Predicate接口 Function接口 1.5 Supplier接口Supplier<T>:包含一个无参的方法 T get():获得结果 该方法不需要参数,它会按照某种实现逻辑(由Lambda表达式实现)返回一个数据 Supplier<T>接口也被称为生产型接口,如果我们制定了接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据供我们使用 1.6 Consumer接口Consumer<T>:包含两个方法 void accept(T t):对给定的参数执行此操作 defaultConsumer<T>andThen(Consumer after):返回一个组合的Consumer,依次执行此操作,然后执行after操作 Consumer<T>接口也被称为消费型接口,它消费的数据的数据类型由泛型指定 1.7 Predicate接口Predicate<T>:常用的四个方法 boolean test(T t):对给定的参数进行判断(逻辑判断有Lambda表达式实现),返回一个布尔值 default Predicate<T>negate():返回一个逻辑的否定,对应逻辑非 default Predicate<T>and(Predicate other):返回一个组合判断,对应短路与 default Predicate<T>or (Predicate other):返回一个组合判断,对应短路或 Predicate<T>接口通常用于判断参数是否满足指定的条件 1.8 Function接口Function<T>:常用两个方法 R apply(T t):将此函数用于给定的参数 default<V>Function andThen(Function after):返回一个组合函数,首先将该函数用于输入,然后将after用于结果. Function<T,R>接口通常用语对此参数进行处理,转换,然后返回一个新的值. 2.1 Stream流的常见生成方式简化集合和数组的操作. Stream流的常见生成方式 生成流 通过数据源(集合,数组等)生成流 中间操作 一个流后面可以跟随零个或多个中间操作,其目的主要是打开流 结束操作 方式: Collection体系的集合可以使用默认方法stream()生成流 default Stream<E> stream() Map体系的集合间接生成流 数组可以通过Stream接口的静态方法of(T...values)生成流 file:///C:\Users\10373\AppData\Local\Temp\ksohtml5884\wps1.jpgfile:///C:\Users\10373\AppData\Local\Temp\ksohtml5884\wps2.jpg file:///C:\Users\10373\AppData\Local\Temp\ksohtml5884\wps3.jpg file:///C:\Users\10373\AppData\Local\Temp\ksohtml5884\wps4.jpgfile:///C:\Users\10373\AppData\Local\Temp\ksohtml5884\wps5.jpg file:///C:\Users\10373\AppData\Local\Temp\ksohtml5884\wps6.jpg
|