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