一定要用的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 多个参数和一个返回值,但是类型都是一样的

posted @   Eular  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示