美文网首页
lambda表达式使用JDK1.8 常见的函数式接口

lambda表达式使用JDK1.8 常见的函数式接口

作者: 那个名字特别特别长的家伙是我 | 来源:发表于2019-11-25 18:26 被阅读0次

jdk1.8 中的java.util.function类提供了大量的函数式接口,以供方便的使用lambda表达式。
本文对主要的函数式接口做一些简单的介绍。

一.Predicate<T>

Predicat 接收参数T对象,返回一个Boolean类型的对象。

Predicate.png

根据源码,我们需要实现test方法,返回类型为Boolean类型。
举例:

Predicate<String> pr = (String name) -> "true".equals(name);
System.out.println(pr.test("true"));

运行结果:

true

二.Consumer<T>

Consumer 接收参数T对象,不返回任何对象。

Consumer .png

根据源码,我们需要实现无返回值的accept方法。
举例:

Consumer<String> cu =(String test) -> System.out.println("this is Consumer demo:"+test);
cu.accept("hello consumer");

运行结果:

this is Consumer demo:hello consumer

三.Function<T,R>

Function 接收参数T对象,返回R对象。

Function.png

根据源码,我们需要实现apply方法,传参为T对象,返回值为R对象。
举例:

 Function<Integer,String > fc = (Integer num) -> "test return:"+num;
 System.out.println(fc.apply(22));

运行结果:
test return:22

四.Supplier<T>

Supplier 不接受任何参数,直接获取指定T类型返回值。


Supplier.png

根据源码,需要实现get方法。
举例:

Supplier<String> sp =()->"test Supplier";
System.out.println(sp.get());

运行结果:

test Supplier

五.UnaryOperator<T>

unaryOperator 接收参数T,通过业务逻辑处理后返回更新后的T类型参数


UnaryOperator.png

根据源码,UnaryOperator继承了Function类,根据前文描述,我们要实现Function类的apply方法。
举例:

UnaryOperator<String> uo =(String test) -> "unaryOperator update string:"+test;
System.out.println(uo.apply("test"));

运行结果:

unaryOperator update string:test

六.BiFunction<T,U,R>

Bifunction 接收第一个参数T,第二个参数U,返回R类型参数。


Bifunction .png

根据源码需要实现apply方法。
举例:

 BiFunction<String,Integer,String> bf =(String name,Integer age) -> "test BiFunction, my name is "+name+",my year's old is "+age;
 System.out.println(bf.apply("Tom", 18));

运行结果:

test BiFunction, my name is Tom,my year's old is 18

七.BinaryOperator<T>

BinaryOperator 接收两个参数T,返回更新后的T类型参数。


BinaryOperator .png

根据源码,BinaryOperator继承了Bifunction,所以我们同样实现apply方法即可。
举例:

BinaryOperator<String> bo = (String name,String sport)->"test BinaryOperator,my name is "+name+",my favourite sport is "+sport;
System.out.println(bo.apply("Tom", "basketball"));

运行结果:

test BinaryOperator,my name is Tom,my favourite sport is basketball

相关文章

  • JDK新特性(四)——函数式接口

    前言 函数式接口是JDK1.8推出的新特性之一,可以说函数式接口给Lambda表达式这种函数提供了简便的使用环境,...

  • Java8实战之-Lambda

    应该在什么地方使用Lambda表达式 你可以在函数式的接口上使用Lambda表达式。什么是函数式接口?接口只定义了...

  • lambda表达式使用JDK1.8 常见的函数式接口

    jdk1.8 中的java.util.function类提供了大量的函数式接口,以供方便的使用lambda表达式。...

  • JDK8新特性 内置函数式接口

    1. 内置函数式接口由来 lambda表达式的前提是需要有函数式接口。而且lambda表达式使用时不关心接口名,抽...

  • Lambda表达式

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

  • Lambda表达式总结

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

  • Java8新特性

    1.Lamda表达式 Lambda表达式的作用主要是用来简化接口的创建,使用Lambda表达式接口必须是函数式接口...

  • Java—Java 8 新增特性详解(Predicate和Str

    Predicate接口 Predicate接口介绍   Predicate是函数式接口,可以使用Lambda表达式...

  • jdk8新特性-方法引用

    简单实例,解决Lambda表达式的冗余 定义函数式接口 调用函数式接口 使用对象名引用成员变量 函数式接口 创建对...

  • Lambda表达式详解

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

网友评论

      本文标题:lambda表达式使用JDK1.8 常见的函数式接口

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