Java8 常用函数式接口

一、什么是函数式接口

函数式接口(Functional Interface): 是描述一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

  • 函数式接口 可以被隐式转换为 lambda 表达式。

自己实现一个函数式接口:

/
 * <p> @Title GreetingService
 * <p> @Description 自定义函数式接口
 *
 * @author ACGkaka
 * @date 2023/2/24 17:51
 */
@FunctionalInterface
public interface GreetingService {
    void sayMessage(String message);
}

简单使用:

public static void main(String[] args) {
    GreetingService greetingService = message -> System.out.println("hello " + message);
    greetingService.sayMessage("java");
}

二、Function(T->R)

定义示例:

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

常用接口:

接口描述
Function<T,R>接受一个输入参数,返回一个结果。
BiFunction<T,U,R>接受两个输入参数,返回一个结果。
IntFunction<R>接受一个int类型输入,返回一个结果 。
IntToLongFunction接受一个int类型输入,返回一个long类型结果。
IntToDoubleFunction接受一个int类型输入,返回一个double类型结果 。
LongFunction<R>接受一个long类型输入,返回一个结果。
LongToIntFunction接受一个long类型输入,返回一个int类型结果。
LongToDoubleFunction接受一个long类型输入,返回一个double类型结果。
DoubleFunction<R>接受一个double类型输入,返回一个结果。
DoubleToIntFunction接受一个double类型输入,返回一个int类型结果。
DoubleToLongFunction接受一个double类型输入,返回一个long类型结果。
ToIntFunction<T>接受一个输入参数,返回一个int类型结果。
ToIntBiFunction<T,U>接受两个输入参数,返回一个int类型结果。
ToLongFunction<T>接受一个输入参数,返回一个long类型结果。
ToLongBiFunction<T,U>接受两个输入参数,返回一个long类型结果。
ToDoubleFunction<T>接受一个输入参数,返回一个double类型结果。
ToDoubleBiFunction<T,U>接受两个输入参数,返回一个double类型结果。

三、Consumer(T->void)

定义示例:

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

常用接口:

接口描述
Consumer<T>接受一个输入参数,无返回值。
BiConsumer<T,U>接受两个输入参数,无返回值。
IntConsumer接受一个int类型的输入参数,无返回值 。
LongConsumer接受一个long类型的输入参数,无返回值。
DoubleConsumer接受一个double类型的输入参数,无返回值。
ObjIntConsumer<T>接受一个object类型和一个int类型的输入参数,无返回值。
ObjLongConsumer<T>接受一个object类型和一个long类型的输入参数,无返回值。
ObjDoubleConsumer<T>接受一个object类型和一个double类型的输入参数,无返回值。

四、Operator(T->T)

定义示例:

@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
    static <T> UnaryOperator<T> identity() {
        return t -> t;
    }
}

常用接口:

接口描述
UnaryOperator<T>接受一个参数为类型T,返回值类型也为T。
BinaryOperator<T>接受两个参数为类型T,返回值类型也为T。
IntUnaryOperator接受一个参数同为类型int,返回值类型也为int 。
IntBinaryOperator接受两个参数同为类型int,返回值类型也为int 。
LongUnaryOperator接受一个参数同为类型long,返回值类型也为long。
LongBinaryOperator接受两个参数同为类型long,返回值类型也为long。
DoubleUnaryOperator接受一个参数同为类型double,返回值类型也为double 。
DoubleBinaryOperator接受两个参数同为类型double,返回值类型也为double 。

五、Predicate(T->boolean)

定义示例:

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

常用接口:

接口描述
Predicate<T>接受一个输入参数,返回一个布尔值结果。
BiPredicate<T,U>接受两个输入参数,返回一个布尔值的结果。
IntPredicate接受一个int输入参数,返回一个布尔值的结果。
LongPredicate接受一个long输入参数,返回一个布尔值类型结果。
DoublePredicate接受一个double输入参数,返回一个布尔值类型结果。

六、Supplier(void ->T)

定义示例:

@FunctionalInterface
public interface Supplier<T> {
    T get();
}

常用接口:

接口描述
Supplier<T>无参数,返回一个结果。
IntSupplier无参数,返回一个int类型结果。
LongSupplier无参数,返回一个long类型的值。
DoubleSupplier无参数,返回一个double类型的值。
BooleanSupplier无参数,返回一个boolean类型的值。

整理完毕,完结撒花~





1.Java 8 函数式接口,https://www.runoob.com/java/java8-functional-interfaces.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值