首页 > 其他分享 >一定要用的lambda

一定要用的lambda

时间:2025-01-19 23:11:17浏览次数:1  
标签:int 要用 入参 类型 参数 double 一定 返回值 lambda

为了熟练使用和记忆,按照这个规则记忆就可以。

函数式接口四大类型:

1.消费型

给一个入参,没有返回值

@FunctionalInterface
public interface Consumer<T> {
    void accept(T t);
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

扩展:

  1. BiConsumer<T, U> 消费两个值
  2. DoubleConsumer 参数类型为double
  3. IntConsumer 参数类型为int
  4. LongConsumer 参数类型为long
  5. ObjDoubleConsumer 第一个参数为T,第二个为double
  6. ObjIntConsumer 第一个参数为T,第二个为int
  7. ObjLongConsumer 第一个参数为T,第二个为long

2.供给型

没有入参,有一个返回值

@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

扩展:

  1. BooleanSupplier 返回boolean
  2. DoubleSupplier 返回 double
  3. IntSupplier 返回 int
  4. LongSupplier 返回 long

3.判断型

返回结果是布尔值

@FunctionalInterface
public interface Predicate<T> {
    boolean test(T t);
}

扩展:

  1. BiPredicate<T, U> 两个入参
  2. DoublePredicate 一个double类型的入参
  3. IntPredicate 一个int类型的参数
  4. LongPredicate 一个long类型的参数

4.功能型

一个入参一个返回值。可以内部做逻辑,也是用的最多的。

@FunctionalInterface
public interface Function<T, R> {
    R apply(T t);
}

扩展:

  1. UnaryOperator extends Function<T, T> 只有一个参数的,入参和返回都是同样的类型
    例如:
    1. LongUnaryOperator、
    2. IntUnaryOperator、
    3. DoubleUnaryOperator
  2. BiFunction<T, U, R> 两个入参,一个返回值
  3. DoubleFunction 一个double类型的入参,T返回类型
  4. IntFunction
  5. LongFunction 这些都是T类型的返回值,不同的入参类型
  6. 以下就是具体的类型:
    1. IntToDoubleFunction 入参int转double
    2. IntToLongFunction
    3. DoubleToLongFunction
    4. DoubleToIntFunction
    5. LongToIntFunction
    6. LongToDoubleFunction
      这些都是具体的类型转换了

特例:BinaryOperator 多个参数和一个返回值,但是类型都是一样的

标签:int,要用,入参,类型,参数,double,一定,返回值,lambda
From: https://www.cnblogs.com/euler-blog/p/18680439

相关文章

  • 【C++】一个完整的位姿(Pose)计算系统,主要用于处理三维空间中的坐标系变换
    1.旋转矩阵计算给定旋转角度(RX=ϕRX=\phiRX=ϕ)、(......
  • C++模板--packaged_task 如何打包 lambda 和函数指针?
    从它的构造函数上看,似乎不能接受lambda和函数指针作为构造函数的参数但可以通过如下自定义推导规则来实现.这实际上是DeductionGuides技术//1template<class_Rp,class..._Args>packaged_task(_Rp(*)(_Args...))->packaged_task<_Rp(_Args...)>;//2template......
  • 推文素材高清无水印哪里下载?这几个网站一定不能错过
    做抖音短视频的朋友都知道,好的素材决定了你的视频能不能火!不知道去哪里下载热门爆款的推文视频素材?别担心,我为你挑选了全世界6个高品质视频素材库,赶紧进来看看吧~!1.稻虎网首先是稻虎网,作为国内顶级的短视频素材网站,提供了大量小说推文视频素材,无论是无论是太空沙、刮肥皂、液......
  • C++ lambda函数
    lambda函数是C++11标准新增的语法糖,也称为lambda表达式或匿名函数。lambda函数的特点是:距离近、简洁、高效和功能强大。 语法:​[](constint&no)->void{cout<<"亲爱的"<<no<<"号:我是一个一个aaaa。\n";};代码示例:#include<iostream>#include<vector>#......
  • 命中索引一定能提高查询速度吗?
    命中索引一定能提高查询速度吗?目录命中索引一定能提高查询速度吗?目录索引的基本原理索引命中与查询性能查询复杂性数据量与索引选择性更新与维护成本过多的索引何时索引能提高查询速度?简单查询高选择性字段适当的索引类型结论答案是否定的,在实际项目中我曾踩过这......
  • lambda表达式篇
    1.当lambda表达式只有一行代码时,这行代码也可以作为整个lambda表达式的返回结果(inta,intb)->a+b;(明确指出参数类型)2.代码多于一行,不能省略{}以及最后一行的return(inta,intb)->{intc=a+b;returnc;}3.当可以用上下文的其他代码推导出表达式的参数类型时,那么参数的类型......
  • 方法引用与lambda底层原理&Java方法引用、lambda能被序列化么?
    0.引入最近笔者使用flink实现一些实时数据清洗(从kafka清洗数据写入到clickhouse)的功能,在编写flink作业后进行上传,发现运行的时候抛出:java.io.NotSerializableException,错误消息可能类似于“org.apache.flink.streaming.api.functions.MapFunctionimplementationisnotser......
  • 总结了6个视频素材网,高清可商用,你一定用得上!
    在视频创作领域,高质量的素材是提升作品吸引力和专业度的关键。无论是制作商业广告、纪录片,还是个人Vlog,寻找合适的视频素材总是不可或缺的一环。为了帮助大家高效获取高清且可商用的视频素材,我精心挑选了以下6个网站,它们不仅资源丰富,而且版权清晰,确保你的创作之路畅通无阻。1......
  • 方法引用与lambda底层原理&Java方法引用、lambda能被序列化么?
    系列文章目录和关于我0.引入最近笔者使用flink实现一些实时数据清洗(从kafka清洗数据写入到clickhouse)的功能,在编写flink作业后进行上传,发现运行的时候抛出:java.io.NotSerializableException,错误消息可能类似于“org.apache.flink.streaming.api.functions.MapFunctionimplemen......
  • Kafka 是一个分布式流式平台,主要用于处理大规模、高吞吐量的消息传递、日志收集和实时
    Kafka集群是什么?Kafka是一个分布式流式平台,主要用于处理大规模、高吞吐量的消息传递、日志收集和实时数据流。Kafka集群是由多个Kafka服务器(称为Broker)组成的,它们共同工作以实现消息的高可用性、可靠性、可扩展性和容错性。Kafka集群的目的是确保消息的持久化和高效传输,同......