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 运行结果
3.完成
Congratulations!
You are one step closer to success!
标签:03,numArray,nums,System,println,Consumer,Java8,out 来源: https://blog.csdn.net/qq_39505245/article/details/123056334