Java 8实战笔记

Java 8中的常用函数式接口

函数式接口 函数描述符 原始类型特化
Predicate T->boolean IntPredicate,LongPredicate,DoublePredicate
Consumer T->void IntConsumer,LongConsumer,DoubleConsumer
Function T->R IntFunction,IntToDoubleFunction,IntToLongFunction,LongFunction,LongToDoubleFunction,LongToIntFunction,DoubleFunction,ToIntFunction,ToDoubleFunction,ToLongFunction
Supplier ()->T BooleanSupplier,IntSupplier, LongSupplier,DoubleSupplier
UnaryOperator T->T IntUnaryOperator,LongUnaryOperator,DoubleUnaryOperator
BinaryOperator (T,T)->T IntBinaryOperator,LongBinaryOperator,DoubleBinaryOperator
BiPredicate L,R)->boolean
BiConsumer (T,U)->void ObjIntConsumer,ObjLongConsumer,ObjDoubleConsumer
BiFunction (T,U)->R ToIntBiFunction,ToLongBiFunction,ToDoubleBiFunction

中间操作和终端操作

操作 类型 返回类型 使用的类型/函数式接口 函数描述符
filter 中间 Stream Predicate T -> boolean
distinct 中间(有状态-无界) Stream
skip 中间(有状态-有界) Stream long
limit 中间(有状态-有界) Stream long
map 中间 Stream Function T->R
flatMap 中间|Stream Function> T -> Stream
sorted 中间(有状态-无界) Stream Comparator (T, T) -> int
anyMatch 终端 boolean Predicate T -> boolean
noneMatch 终端 boolean Predicate T -> boolean
allMatch 终端 boolean Predicate T -> boolean
findAny 终端 Optional
findFirst 终端 Optional
forEach 终端 void T -> void
collect 终端 R ConsumerCollector
reduce 终端(有状态-有界) Optional BinaryOperator (T, T) -> T
count 终端 long

流的数据源和可分解性

可分解性
ArrayList 极佳
LinkedList
IntStream.range 极差
Stream.iterate
HashSet
TreeSet

Optional类的方法

方法 描述
empty 返回一个空的 Optional 实例
filter 如果值存在并且满足提供的谓词,就返回包含该值的 Optional 对象;否则返回一个空的 Optional 对象
flatMap 如果值存在,就对该值执行提供的 mapping 函数调用,返回一个 Optional 类型的值,否则就返回一个空的 Optional 对象
get 如果该值存在,将该值用 Optional 封装返回,否则抛出一个 NoSuchElementException 异常
ifPresent 如果值存在,就执行使用该值的方法调用,否则什么也不做
isPresent 如果值存在就返回 true,否则返回 false
map 如果值存在,就对该值执行提供的 mapping 函数调用
of 将指定值用 Optional 封装之后返回,如果该值为 null,则抛出一个 NullPointerException 异常
ofNullable 将指定值用 Optional 封装之后返回,如果该值为 null,则返回一个空的 Optional 对象
orElse 如果有值则将其返回,否则返回一个默认值
orElseGet 如果有值则将其返回,否则返回一个由指定的 Supplier 接口生成的值
orElseThrow 如果有值则将其返回,否则抛出一个由指定的 Supplier 接口生成的异常

你可能感兴趣的:(Java 8实战笔记)