通俗总结 四大函数式接口 + lambda 表达式结合

通俗总结 四大函数式接口 + lambda 表达式结合

通俗总结

对于函数式接口:所谓函数式接口其实就是以一个函数作为接口,本质是函数

对于 lambda:三个东西,参数,返回值和内容,lambda 本身也就是简化函数写法的一种函数表达式

所以,函数式接口本身就可以看做是一种 lambda,因为函数式接口就是一种函数的表达方式!

菜鸟总结

精讲

Function

解释

  • Function 函数型接口: 一个输入参数,一个输出参数
  • 理解:功能性函数式参数

例子

  Function<String, String> function = s -> s;
  System.out.println(function.apply("hello function"));

Function 源码
在这里插入图片描述

Consumer

解释

  • Consumer 消费型接口: 一个输入参数,没有返回值
  • 理解:消费输入的参数,不需要返回
  • lambda: 此处的 println() 方法被当做方法引用(相当于直接调用了别人的方法,而这个方法必须要是与当前函数式接口类型对应的唯一方法的参数返回值结构
  • (续 lambda)比方说,此处的 consumer.accept() 方法需要一个字符串参数,不需要返回值,而 System.out.println() 方法也只需要一个字符串参数,无返回值

例子

  Consumer<String> consumer = System.out::println;
  consumer.accept("hello consumer");

Consumer 源码
在这里插入图片描述

Predicate

解释

  • Predicate 断定型接口:一个输入参数,返回值是布尔类型
  • 谓词,断言
  • lambda: 此处的 isEmpty() 方法被当做方法引用(相当于直接调用了别人的方法,而这个方法必须要是与当前函数式接口类型对应的唯一方法的参数返回值结构
  • (续 lambda)比方说,此处的 predicate.test() 方法需要一个字符串参数,返回布尔类型的返回值,而 String.isEmpty() 方法也需要一个字符串参数,返回布尔类型的返回值

例子

   Predicate<String> predicate = String::isEmpty;
   System.out.println(predicate.test("hello predicate"));

Predicate 源码
在这里插入图片描述

Supplier

解释

  • Supplier 供给型接口 没有参数,只有返回值
  • 理解:与 consumer 相反,无参数提供返回

例子

   Supplier<Integer> supplier = () -> 1024;
   System.out.println(supplier.get());

Supplier 源码
在这里插入图片描述

精简

全:

package com.dongua.functionalinterface;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * @author dongua
 * @date 2021/10/20 20:51
 **/
public class FunctionDemo {
    public static void main(String[] args) {
        // Function 函数型接口: 一个输入参数,一个输出参数
        // 理解:功能性函数式参数
        Function<String, String> function = s -> s;
        System.out.println(function.apply("hello function"));

        // Consumer 消费型接口: 一个输入参数,没有返回值
        // 理解:消费输入的参数,不需要返回
        // lambda: 此处的 println() 方法被当做方法引用(相当于直接调用了别人的方法,而这个方法必须要是与当前函数式接口类型对应的唯一方法的参数返回值结构)
        // (续 lambda)比方说,此处的 consumer.accept() 方法需要一个字符串参数,不需要返回值,而 System.out.println() 方法也只需要一个字符串参数,无返回值
        Consumer<String> consumer = System.out::println;
        consumer.accept("hello consumer");

        // Predicate 断定型接口:一个输入参数,返回值是布尔类型
        // 谓词,断言
        // lambda: 此处的 isEmpty() 方法被当做方法引用(相当于直接调用了别人的方法,而这个方法必须要是与当前函数式接口类型对应的唯一方法的参数返回值结构)
        // 续 lambda)比方说,此处的 predicate.test() 方法需要一个字符串参数,返回布尔类型的返回值,而 String.isEmpty() 方法也需要一个字符串参数,返回布尔类型的返回值
        Predicate<String> predicate = String::isEmpty;
        System.out.println(predicate.test("hello predicate"));

        // Supplier 供给型接口 没有参数,只有返回值
        // 理解:与 consumer 相反,无参数提供返回
        Supplier<Integer> supplier = () -> 1024;
        System.out.println(supplier.get());

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值