Java8 Steam中预定义的函数式接口
Java8预定义函数式接口
函数式接口 | 函数描述符 | 原始类型特化 |
---|---|---|
Predicate |
T->boolean | IntPredicate,LongPredicate, DoublePredicate |
Consumer |
T->void | IntConsumer,LongConsumer, DoubleConsumer |
Function<T,R> | T->R | IntFunction< R >,IntToDoubleFunction,IntToLongFunction,LongFunction |
Supplier |
()->T | BooleanSupplier,IntSupplier, LongSupplier,DoubleSupplier |
UnaryOperator |
T->T | IntUnaryOperator,LongUnaryOperator,DoubleUnaryOperator |
BinaryOperator |
(T,T)->T | IntBinaryOperator,LongBinaryOperator,DoubleBinaryOperator |
BiPredicate<L,R> | (L,R)->boolean | |
BiConsumer<T,U> | (T,U)->void | ObjIntConsumer |
BiFunction<T,U,R> | (T,U)->R | ToIntBiFunction<T,U>,ToLongBiFunction<T,U>,ToDoubleBiFunction<T,U> |
一些常用的Lambda表达式与其对应的函数式接口应用举例:
使用案例 | Lambda表达式 | 对应的函数式接口 |
---|---|---|
布尔表达式 | (List list) -> list.isEmpty() | Predicate<List |
创建对象 | () -> new Apple(10) | Supplier< Apple > |
消费一个对象 | (Apple a) -> System.out.println(a.getWeight()) | Consumer< Apple > |
从一个对象中选择/提取 | (String s) -> s.length() | Function< String, Integer >或ToIntFunction< String > |
合并两个值 | (int a, int b) -> a * b | IntBinaryOperator |
比较两个对象 | (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()) | Comparator< Apple >或BiFunction< Apple, Apple, Integer > 或 ToIntBiFunction< Apple, Apple > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)