java函数式编程:四大Function

java函数式编程:四大Functionjava util function 包下的四大 Function1 Consumer 消费者 publicinterf T voidaccept Tt 从名字可以看出 消费者是来消费的 它接受一个数据 没有任何返回值 简单使用 比如我们只想打印列表中的每个元素 这里的 forEach Consumer 里面接受的参数就是一个 C T

java.util.function包下的四大Function

函数式编程为jdk1.8新特性,学习好利用好,编程变得更加美好~

1. Consumer 消费者

public interface Consumer<T> { 
    void accept(T t); } 

从名字可以看出,消费者是来消费的,它接受一个数据,没有任何返回值。

简单使用:比如我们只想打印列表中的每个元素,这里的forEach(Consumer)里面接受的参数就是一个Consumer

 List<Object> objects = Arrays.asList("a", "b", "c"); objects.stream().forEach(s -> System.out.println(s)); 

Comsumer家族成员

1. 一次消费两个数据 public interface BiConsumer<T, U> { 
    void accept(T t, U u); } 2. 消费一个Double类型的数据 public interface DoubleConsumer { 
    void accept(double value); } 3. 消费一个int数据 public interface IntConsumer { 
    void accept(int value); } 4. 消费一个Long数据 public interface LongConsumer { 
    void accept(long value); } 5. 消费两个数据,其中一个为Double类型 public interface ObjDoubleConsumer<T> { 
    void accept(T t, double value); } 6. 消费两个数据,其中一个为Int类型 public interface ObjIntConsumer<T> { 
    void accept(T t, int value); } 7. 消费两个数据,其中一个为Long类型 public interface ObjLongConsumer<T> { 
    void accept(T t, long value); } 

2. Function 转换器

public interface Function<T, R> { 
    R apply(T t); } 
List<Object> objects = Arrays.asList("a", "b", "c"); objects.stream().map(t -> { 
   return t + " hello";}).forEach(System.out::println); 

Function家族

1. 接受两个数据,返回一个结果 public interface BiFunction<T, U, R> { 
    R apply(T t, U u); } 2. 接受一个double类型数据,返回一个结果 public interface DoubleFunction<R> { 
    R apply(double value); } 3. 接受一个double类型,返回一个int类型数据 public interface DoubleToIntFunction { 
    int applyAsInt(double value); } 4. 接受一个double,返回一个long类型 public interface DoubleToLongFunction { 
    long applyAsLong(double value); } 5. 接受一个int,返回一个结果 public interface IntFunction<R> { 
    R apply(int value); } 6. 还有IntToDoubleFunction, IntToLongFunction, LongFunction, LongToDoubleFunction, LongToIntFunction, ToDoubleBiFunction, ToDoubleFunction, ToDoubleFunction, ToIntBiFunction, ToIntFunction, ToLongBiFunction, ToLongFunction等,根据名字很容易理解其作用,不一一贴上源码。 

3. Predicate 裁判

public interface Predicate<T> { 
    boolean test(T t); } 
List<Object> objects = Arrays.asList("a", "b", "c"); objects.stream().filter(s -> { 
    return s.equals("a"); }).forEach(System.out::println); 

Predicate家族

1. 接受两个参数,返回true or false public interface BiPredicate<T, U> { 
    boolean test(T t, U u); } 2. 接受一个double,返回true or false public interface DoublePredicate { 
    boolean test(double value); } 3. 接受一个int,返回true or false public interface IntPredicate { 
    boolean test(int value); } 4. 接受一个Long,返回true or false public interface LongPredicate { 
    boolean test(long value); } 

4. Supplier 供应商

public interface Supplier<T> { 
    T get(); } 
Supplier<String> supplier = new Supplier<String>() { 
    @Override public String get() { 
    return "hello world"; } }; String s = supplier.get(); System.out.println(s); 

Supplier家族

1. 返回booleanpublic interface BooleanSupplier { 
    boolean getAsBoolean(); } 2. 返回double public interface DoubleSupplier { 
    double getAsDouble(); } 3. 返回int public interface IntSupplier { 
    int getAsInt(); } 4. 返回long public interface LongSupplier { 
    long getAsLong(); } 

总结:1.8新增的函数式接口在Stream流中有众多应用,后续将继续学习Stream流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232877.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月3日 下午7:01
下一篇 2025年9月3日 下午7:22


相关推荐

  • Rectified Linear Units, 线性修正单元激活函数

    Rectified Linear Units, 线性修正单元激活函数转自 https blog csdn net Jkwwwwwwwwww article details ReLU 在神经网络中 常用到的激活函数有 sigmoid 函数 f x 11 e xf x 11 e x 双曲正切函数 f x tanh x f x tanh x 而本文要介绍的是另外一种激活函数 RectifiedLin ReLU

    2026年3月19日
    2
  • django 聚合函数_python聚合函数

    django 聚合函数_python聚合函数前言orm模型中的聚合函数跟MySQL中的聚合函数作用是一致的,也有像Sum、Avg、Count、Max、Min,接下来我们逐个介绍聚合函数所有的聚合函数都是放在django.db.models

    2022年8月7日
    6
  • JWPlayer_nplayer浏览器

    JWPlayer_nplayer浏览器网盘:https://pan.baidu.com/s/1mmtppZSFOni5tLI2TJWKrw<scripttype=”text/javascript”>varthePlayer;//保存当前播放器以便操作$(function(){thePlayer=jwplayer(‘container’).setu…

    2022年10月8日
    4
  • unity3d百度百科_3d怎么恢复四个界面

    unity3d百度百科_3d怎么恢复四个界面本文介绍了Unity3D界面及游戏对象基本操作。

    2022年8月10日
    7
  • plsqldev8.0下载和注册码

    plsqldev8.0下载和注册码[b]关键词:PL/SQL,下载,plsqldev,注册码,plsqldev711,汉化文件[/b]PL/SQLDeveloper是一种集成的开发环境,专门用于开发、测试、调试和优化OraclePL/SQL存储程序单元,比如触发器等。PL/SQLDeveloper功能十分全面,大大缩短了程序员的开发周期。[url]http://www.kutoku.info/software…

    2022年4月25日
    47
  • 【Redis】Redis4.0、5.0、6.0版本特性整理「建议收藏」

    【Redis】Redis4.0、5.0、6.0版本特性整理「建议收藏」文章目录Redis版本特性Redis4模块系统PSYNC2.0缓存驱逐策略优化LazyFree交换数据库混合持久化内存命令兼容NAT和DockerActiveDefrag其他Redis5Stream类型新的Redis模块API集群管理器更改Lua改进RDB格式变化动态HZZPOPMIN&ZPOPMAX命令CLIENT新增命令其他Redis6多线程IOSSL支持ACL支持RESP3客户端缓存集群代理Disquemodule其他Redis版本特性Redis4模块系统​ R

    2025年5月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号