thinkphp做的网站怎么预览,好听的公司名称,wordpress 阿里百秀主题,欧米茄手表价格官网Java 8函数式编程设计-Functional-Interface 我自己的理解#xff0c;函数式编程对用户最大的价值是促使开发者养成模块化编程的习惯#xff0c;代码可读性和维护性提高很多。 通过阅读JDK 8的 java.util.function 和 java.util.stream 包源码#xff0c;意在理解Java的函数…Java 8函数式编程设计-Functional-Interface 我自己的理解函数式编程对用户最大的价值是促使开发者养成模块化编程的习惯代码可读性和维护性提高很多。 通过阅读JDK 8的 java.util.function 和 java.util.stream 包源码意在理解Java的函数式接口设计。
读后自己的理解Java函数式编程的核心是将最基础的数学函数抽象成接口对象可在已有的接口上进行积木拼插组合形成完整地类型转换系统。最基础的数学函数包括一元函数、谓词、二元函数、运算符计算对应的Java接口分别是Function、Predicate、BiFunction、BinaryOperator。
源码阅读笔记jdk-8-Functional-Interface 函数式接口API
FunctionalInterfaceFunctional interfaces FunctionConsumerPredicateSupplier 数据流特性和操作 BaseStreamStream 使用示例 FunctionalInterface
函数式接口注解从概念上讲函数式接口都只有一个抽象方法。请注意可以使用Lambda表达式、方法引用和构造器引用创建函数式接口的实例。 Functional interfaces
函数式接口提供lambda表达式和方法引用的目标类型每个函数式接口有一个单一的抽象方法称为函数方法函数式接口可以匹配或适配为lambda表达式的参数和返回类型函数式接口可以在多个上下文中提供一个目标类型如赋值上下文、方法调用上下文、转换上下文函数式接口往往代表抽象的概念如函数、操作、谓词可扩展的命名约定基本的一元函数Function、Consumer、Predicate、Supplier二元函数BiFunction、BiConsumer、BiPredicate扩展的运算符UnaryOperator、BinaryOperator泛型-基本类型int、long、double
一元函数
FunctionT, R
从T到R的一元映射函数接受一个参数并产生一个结果的一元函数 (类型转换函数)R apply(T t)组合函数compose(before)V - T - RandThen(after)T - R - V基本类型的参数IntFunction、LongFunction、DoubleFunction基本类型的结果ToIntFunction、ToLongFunction、ToDoubleFunction基本类型的参数和结果IntToLongFunction、IntToDoubleFunction
ConsumerT
从T到void的一元函数接受一个入参但不返回任何结果的操作void accept(T t)andThen(after)N个消费者模式多次消费的场景基本类型的参数IntConsumer、LongConsumer、DoubleConsumer
PredicateT
一个参数的谓词(返回布尔值的函数)boolean test(T t)谓词函数and、negate、or基本类型的参数IntPredicate、LongPredicate、DoublePredicate
SupplierT
表示结果的供应商T get()基本类型的结果BooleanSupplier、IntSupplier、LongSupplier、DoubleSupplier
使用图表方式总结如下
一元函数方法类型转换组合方法基本类型专用类FunctionT, RR apply(T t)T-Rcompose(before)、andThen(after)IntFunction、ToIntFunction、IntToLongFunctionConsumervoid accept(T t)T-voidandThen(after)IntConsumerPredicateboolean test(T t)T-booleanand、negate、orIntPredicateSupplierT get()*-TIntSupplier、BooleanSupplier
二元函数
BiFunctionT, U, R
从(T、U)到R的二元函数接受两个参数并产生一个结果的二元函数R apply(T t, U u)组合函数andThen(Function? super R, ? extends V after)(T, U) - R - V基本类型的结果ToIntBiFunctionT, U、ToLongBiFunctionT, U、ToDoubleBiFunctionT, U
BiConsumerT, U
从(T、U)到void的二元函数接受两个入参但不返回任何结果的操作void accept(T t, U u)基本类型的参数ObjIntConsumer、ObjLongConsumer、ObjDoubleConsumer
BiPredicateT, U
两个参数的谓词(返回布尔值的函数)boolean test(T t, U u)谓词函数and、negate、or
使用图表方式总结如下
二元函数方法类型转换组合方法基本类型专用类BiFunctionT, U, RR apply(T t, U u)(T、U)-RandThen(Function after)ToIntBiFunctionT, UBiConsumerT, Uvoid accept(T t, U u)(T、U)-voidandThen(after)ObjIntConsumerBiPredicateT, Uboolean test(T t, U u)(T、U)-booleanand、negate、or
扩展的运算符
UnaryOperatorT
一元运算符(单个操作数生产与操作数类型相同的结果)继承自FunctionT, T基本类型的运算符IntUnaryOperator、LongUnaryOperator、DoubleUnaryOperator
BinaryOperatorT
二元运算符(两个相同类型的操作数生产与操作数类型相同的结果)继承自BiFunctionT, T, T基本类型的运算符IntBinaryOperator、LongBinaryOperator、DoubleBinaryOperator
运算符父类组合方法基本类型专用类UnaryOperatorFunctionT, TIntUnaryOperator: int applyAsInt(int operand)BinaryOperatorBiFunctionT, T, TminBy、maxByIntBinaryOperator: int applyAsInt(int left, int right)
数据流操作
BaseStreamT,S extends BaseStreamT,S
数据流操作特性
顺序流并行流拆分器关闭数据流(数据流管道)
StreamT 数据流 中间操作返回StreamT filterdistinctmapflatMappeek 终结操作返回结果/OptionalT collectforEachreduceanyMatchfindAnyfindFirstcountmaxmin
使用示例
OptionalT 单值数据流 可能包含null值的容器对象包装方法的返回结果empty()、of(T value)、ofNullable(T value)isPresent()、get()void ifPresent(Consumer? super T consumer)Optional filter(Predicate? super T predicate)过滤操作Optional map(Function? super T, ? extends U mapper)Optional flatMap(Function? super T, Optional mapper)T orElse(T other)、T orElseGet(Supplier? extends T other)、T orElseThrow(Supplier? extends X exceptionSupplier) throws X基本类型实现OptionalInt、OptionalLong、OptionalDouble使用模式 Optional.ifPresent(consumer)Optional.filter(predicate).flatMap(mapper)Optional.filter(predicate).map(mapper) 祝大家玩得开心ˇˍˇ
简放杭州