Java8新特性 - 03 - 函数式接口03 - Consumer详解

1.Consumer接口说明

消费者接口
核心方法 void accept(T t) : 有参数,无返回值

 * 说明 :
 *    1.接口名称 : Consumer
 *    2.方法
 *      void accept(T t) : 有参数,无返回值;
 *      default Consumer<T> andThen(Consumer<? super T> after) : 有多个的时候,可以联动的使用
 *    3.应用场景 :
 *        当你需要对某些数据做处理且不需要返回值的时候,可以使用此接口
 *
 *     【注意】 : 此处的 andThen 方法可能会比较难理解;
 *                不过,跟着代码 结合 运行结果来理解,还是比较简单的
 *                

2.使用案例

2.1 案例代码

package com.northcastle.G_functionalInterface;

/**
 * @Classname ConsumerTest
 * @Description 函数式接口 : 消费者
 * @Date 2022-02-18 12:32
 * @Created by Hongchang Wang
 */

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;


public class ConsumerTest {

    public static void main(String[] args) {
        //1.声明一个int类型的数组
        int[] nums = {1,3,5,7,2,6};
        //2.使用Consumer.accept()进行消费
        consumerData(numArray ->{
            int sum = 0;
            for (int i : numArray) {
                sum += i;
            }
            System.out.println("数组的和是 : "+sum);
        },nums);

        System.out.println("====================");

        //3.使用  andThen 方法进行连续消费
        List<Integer> numList = Arrays.asList(1,3,5,7,2,6);
        consumerDataMore(numArray ->{
            System.out.println("第一个消费方法 begin");
            //将数据 【正序】 排列后输出
            Collections.sort(numArray,(a,b)-> a-b); // 一句话排序,非常的简单
            System.out.println(numArray);
            System.out.println("第一个消费方法 end");
            System.out.println();
        },numArray ->{
            System.out.println("第二个消费方法 begin");
            //将数据 【倒序】 排列后输出
            Collections.sort(numArray,(a,b)->b-a);
            System.out.println(numArray);
            System.out.println("第二个消费方法 end");
            System.out.println();
        },numArray ->{
            System.out.println("第三个消费方法 begin");
            //直接将数据打印输出 : 此时应该与 第二个消费方法的处理一致
            System.out.println(numList);
            System.out.println("第三个消费方法 end");
        },numList);
    }

    /**
     * 1.消费数据的使用:消费一个int类型的数组,将数据求和后输出
     * @param consumer
     * @param nums
     */
    public static void consumerData(Consumer<int[]> consumer,int[] nums){
        consumer.accept(nums);
    }

    /**
     * 2.多个消费的连续使用 : andThen方法
     * @param consumer1 第一个消费
     * @param consumer2 第二个消费
     * @param consumer3 第三个消费
     * @param nums 被消费的数据数据
     */
    public static void consumerDataMore(Consumer<List<Integer>> consumer1, Consumer<List<Integer>> consumer2, Consumer<List<Integer>> consumer3, List<Integer> nums){
        //使用andThen方法连续消费nums数组
        /**
         * 解释 : 先执行第一个消费的 accept()方法
         *         再执行第二个消费的 accept()方法
         *         再执行第三个消费的 accept()方法
         */
        consumer1.andThen(consumer2).andThen(consumer3).accept(nums);
    }
}

2.2 运行结果

Java8新特性 - 03 - 函数式接口03 - Consumer详解

3.完成

Congratulations!
You are one step closer to success!

上一篇:Linux bunzip2 命令


下一篇:java IO理论总结