美文网首页
Java中的函数式接口及Lambda表达式

Java中的函数式接口及Lambda表达式

作者: DASH_1024 | 来源:发表于2019-07-21 22:54 被阅读0次

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

四个最基本的函数式接口

Function<T, R>:R apply(T t)  输入类型T返回类型R。
Consumer<T>:void accept(T t)  输入类型T,“消费”掉,无返回。
Predicate<T>:boolean test(T t)  输入类型T,并进行条件“判断”,返回true|false。
Supplier<T>:T get()  无输入,“生产”一个T类型的返回值。

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

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

double类型的函数式接口

DoubleFunction<R>:R apply(double value);
DoubleConsumer:void accept(double value);
DoublePredicate:boolean test(double value);
DoubleSupplier:double getAsDouble();

int类型的函数式接口

IntFunction<R>:R apply(int value);
IntConsumer:void accept(int value);
IntPredicate:boolean test(int value);
IntSupplier:int getAsInt();

long类型的函数式接口

LongFunction<R>:R apply(long value);
LongConsumer:void accept(long value);
LongPredicate:boolean test(long value);
LongSupplier:long getAsLong();

boolean类型的函数式接口

BooleanSupplier:boolean getAsBoolean();

二元函数式接口

BiFunction<T, U, R>:R apply(T t, U u);
BiConsumer<T, U>:void accept(T t, U u);
BiPredicate<T, U>: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;

相关文章

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • 《Java 8实战》学习总结

    Java 8新特性概览 Lambda表达式 流 默认方法 Lambda表达式 Lambda和函数式接口Java 8...

  • 2020-07-18函数式接口

    函数式接口概述 函数式接口:有且仅有一个抽象方法的接口java中的函数式编程体现的就是Lambda表达式,所以函数...

  • JDK1.8-Lambda表达式

    一、Lambda表达式及函数式接口介绍 1. 描述 Lambda表达式是Java8中最重要的新功能之一。使用Lam...

  • lambda表达式

    概要: 函数式编程特性 lambda表达式语法及应用场景 Java 8自带函数式接口详解 一、函数式编程特性 1....

  • Lambda表达式总结

    Lambda表达式总结使用范例以及例子Lambda表达式基础语法函数式接口Lambda练习Java8四大内置函数式...

  • 函数式接口

    函数式接口:有且仅有一个抽象方法的接口 Java中的函数式编程体现就是lambda表达式,所以函数式接口就是可以适...

  • Java 接口知识点

    接口的特性 函数式接口 抽象类和接口区别 Lambda表达式 java常用接口

  • Java 8 新特性(笔记)

    1. Lambda表达式和函数式接口 Java 8中,Function,Consumer,Predicate,Su...

  • Lambda表达式详解

    什么是Lambda表达式 Lambda表达式是Java 8的新特性,是函数式接口的实例。使用Lambda表达式可以...

网友评论

      本文标题:Java中的函数式接口及Lambda表达式

      本文链接:https://www.haomeiwen.com/subject/utkblctx.html