JUC:11四大原生函数式接口:函数型接口Function、判断型函数接口Predicate、Supplier供给型接口、消费型接口Consumer

Lamda表达式好处、Lamda表达式演变、Lamda表达式使用总结

什么是函数式接口

有且只有一个抽象方法(public abstract修饰的方法)的接口,可以有多个非抽象方法,函数式接口可以使用Lamda表达式(Lamda表达式虽然可以简化代码,但可读性差,有些公司是禁用Lamda表达式的)。

四大原生函数式接口

在这里插入图片描述

Function:函数型接口

函数型接口:有入参,有返回值,你里面想写什么表达式都可以
Interface Function<T,R>

参数类型
T - 函数输入的类型
R - 函数的结果类型

在这里插入图片描述

Function Demo

package functions;

import java.util.function.Function;

public class FunctionTest {

    public static void main(String[] args) {

        //匿名内部类需要new
        Function<String, String> function = new Function<String, String>() {
            @Override
            public String apply(String str) {
                return "你输入:" + str;
            }
        };
        System.out.println(function.apply("sjhajkhjkashjk"));

        //Lamda表达式无需new
        Function<String, String> function2 = (str) -> {
            return "你输入2:" + str;//只有一行代码return是可以省略的,规范一般要写
        };
        System.out.println(function2.apply("sjhajkhjkashjk"));

    }
}

Predicate:判断型接口

判断型接口:有一个入参,返回值指定为布尔值,一般用于判断
Interface Predicate

参数类型
T - T输入的类型

在这里插入图片描述

Predicate Demo

package functions;

import org.apache.commons.lang3.StringUtils;

import java.util.function.Predicate;

public class PredicateTest {

    public static void main(String[] args) {

        //判断是否为空,匿名内部类需要new
        Predicate<String> predicate = new Predicate<String>() {
            @Override
            public boolean test(String str) {
                return StringUtils.isBlank(str);
            }
        };
        System.out.println(predicate.test(""));

        //Lamda表达式无需new
        Predicate<String> predicate2 = (str) -> {
            return StringUtils.isBlank(str);
        };
        System.out.println(predicate2.test("1"));
    }
}

Supplier:供给型接口

供给型接口:只有返回值,没有输入值,即供给
Interface Supplier

参数类型
T - 该供应商提供的结果类型

在这里插入图片描述

Supplier Demo

package functions;

import java.util.function.Supplier;

public class SupplierTest {
    public static void main(String[] args) {

        Supplier<String> supplier = new Supplier<String>() {
            @Override
            public String get() {
                return "牛爷爷";
            }
        };
        supplier.get();

        Supplier<String> supplier1 = () -> {
            return "胡图图";
        };
        supplier1.get();
    }
}

Consumer:消费型接口

消费型接口:只有输入,没有返回值,即消费
Interface Consumer

参数类型
T - 操作输入的类型

在这里插入图片描述

Consumer Demo

package functions;

import java.util.function.Consumer;

public class ConsumerTest {
    public static void main(String[] args) {

        Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("收到了" + s);
            }
        };
        consumer.accept("123");

        Consumer<String> consumer1 = (s) -> {
            System.out.println("收到了" + s);
        };
        consumer1.accept("222");
    }
}

lambda表达式过滤、链式编程、函数式接口、Stream流式计算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值