函数式接口

JDK 1.8常见的函数式接口

Consumer、Function、Predicate、Supplier 接口分析

1. 这些接口位于:java.util.function 包下
2. 分别是Consumer(消费型)、supplier(供给型)、predicate(谓词型)、function(功能性)

1. Consumer接口

1. Consumer接口就是一个消费型的接口。
2. Consumer接口中,实现accpet方法,该方法有入参,无返回值。
// 生成List列表
public static List<Integer> generator() {
        List<Integer> data =  Lists.newArrayList(1,3,5,9,11,12);
        return data;
    }
public static void main(String[] args) {
        // Consumer 消费者接口 方式一:
        Consumer<Integer> consumer = new Consumer<Integer>() {
            @Override
            public void accept(Integer operator) {
                System.out.println(operator + 2);
            }
        };
        
        // 使用lambda 方式二:
        Consumer<Integer> consumer = operator -> System.out.println(operator + 2); 
        generator().forEach(consumer);
    }
Consumer总结:
① Consumer是一个接口,需实现一个 accept 方法,就可以作为一个“消费者”输出信息。
② 其实,lambda 表达式、方法引用的返回值都是 Consumer 类型,所以,他们能够作为 forEach 方法的参数,并且输出一个值。

2.Supplier 接口

1. Supplier接口就是一个供给型的接口,用来存储数据。
2. Supplier接口中,实现get方法,该方法无入参,有返回值。
public static void main(String[] args) {
        Supplier<Integer> supplier1 = new Supplier<Integer>(){

            @Override
            public Integer get() {
                return new Random().nextInt();
            }
        };

        Supplier<Integer> supplier2 = () -> new Random().nextInt();

        System.out.println("supplier--->" + supplier2.get());
    }
Supplier总结:
① Supplier 接口可以理解为一个容器,用于装数据的。
② Supplier 接口有一个 get 方法,可以返回值。

3.Predicate 接口

1. Predicate接口就是一个预测型的接口,用来进行添加条件判断。
2. Predicate接口中,实现test方法,该方法有入参,有返回值。
public static void main(String[] args) {
        // 方式1:
        Predicate<Integer> predicate1 = new Predicate<Integer>() {
            @Override
            public boolean test(Integer operator) {
                return operator > 10;
            }
        };

        // 方式2:
        Predicate<Integer> predicate2 = operator -> operator > 10;
        
        List<Integer> resp =  generator().stream().filter(predicate2).collect(Collectors.toList());
        System.out.println("resp---->" + JsonUtils.toJson(resp));
    }
Predicate 总结:
① Predicate 是一个预测型接口,其实只是起到一个判断作用。
② Predicate 通过实现一个 test 方法做判断。

4.Function接口

1. Function 接口是一个功能型接口,它的一个作用就是转换作用,将输入数据转换成另一种形式的输出数据。
2. Predicate接口中,实现test方法,该方法有入参,有返回值。
public static void main(String[] args) {
        Function<Integer, String> function = new Function<Integer, String>() {

            @Override
            public String apply(Integer o) {
                return "Fun - " + o;
            }

            @Override
            public Function andThen(Function after) {
                return Function.super.andThen(after);
            }

            @Override
            public Function compose(Function before) {
                return Function.super.compose(before);
            }
        };
        
        List<String> resp =  generator().stream().map(function).collect(Collectors.toList());
    }
Function 接口总结
① Function 接口是一个功能型接口,是一个转换数据的作用。
② Function 接口实现 apply 方法来做转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值