java的函数表达式_Java中的函数式接口及Lambda表达式

C++,C#,Python等各个编程语言早已经支持lambda表达式了,Java从java8开始也支持Lambda表达式了,其中在java.util.function 包中提供给我们一些最常用的函数式接口。

四个最基本的函数式接口

Function:R apply(T t) 输入类型T返回类型R。

Consumer:void accept(T t) 输入类型T,“消费”掉,无返回。

Predicate:boolean test(T t) 输入类型T,并进行条件“判断”,返回true|false。

Supplier:T get() 无输入,“生产”一个T类型的返回值。

基本数据类型的函数式接口

上面的四个接口因为使用泛型,Java泛型不支持基本数据类型,又因为基本数据类型与引用类型频繁的拆装箱将会严重影响效率,所以有Java还提供了几个基本数据类型的函数式接口:

double类型的函数式接口

DoubleFunction:R apply(double value);

DoubleConsumer:void accept(double value);

DoublePredicate:boolean test(double value);

DoubleSupplier:double getAsDouble();

int类型的函数式接口

IntFunction:R apply(int value);

IntConsumer:void accept(int value);

IntPredicate:boolean test(int value);

IntSupplier:int getAsInt();

long类型的函数式接口

LongFunction:R apply(long value);

LongConsumer:void accept(long value);

LongPredicate:boolean test(long value);

LongSupplier:long getAsLong();

boolean类型的函数式接口

BooleanSupplier:boolean getAsBoolean();

二元函数式接口

BiFunction:R apply(T t, U u);

BiConsumer:void accept(T t, U u);

BiPredicate:boolean test(T t, U u);

Lambda表达式语法

(int x, int y) -> { return x + y; }

其中(int x, int y)为参数列表, {return x + y}为函数体,中建用箭头“->”连接起来。下面列举一些示例:

// 多个参数

(type1 arg1, type2 arg2...) -> { body }

(int a, int b) -> { return a + b; }

// 可以显式声明参数的类型,也可以从上下文推断参数的类型。

(arg1, arg2...) -> { body }

(a, b) -> { return a + b; }

// 一个参数

(a) -> { return a * a; }

// 参数列表只有一个参数可以省略:参数列表的小括号

a -> { return a * a; }

// 方法体只有一条语句可以省略:方法体大括号以及return关键字

a -> a * a;

// 没有参数,需要用一对空括号来表示

() -> return 1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值