Java 8 中的 消费者接口Consumer 是一个函数接口,它可以接受一个泛型 类型参数,它属于java.util.function包。
 accept(T) 方法:是 Consumer 函数式接口的方法,传入单个输入参数,无返回值,可以用于 Lambda 表达式和方法引用。
 andThen(Consumer) 方法:可以传入一个 Consumer ,返回组合了两个 Consumer 后的 Consumer ,传入的 Consumer 不能为 null,否则会得到 NullPointerException 。
你可以使用 Consumer 来执行某个动作,比如打印操作,该动作接受一个参数并且不返回任何值。
我们先来看两个例程:
import java.util.function.Consumer;
public class ConsumerTest {
	public static void main(String[] args) {
        Consumer<String> first = x -> System.out.println("1."+x.toLowerCase());
        Consumer<String> second = y -> System.out.println("2." + y);
        System.out.println("开始");
        Consumer<String> result = first.andThen(second);
        //调用了accept 时,会先执行 first 的代码,再执行 second 的代码
        result.accept("World");
   
	}
}
调用accept 方法时,会先执行 first 里的代码,再执行 second 里的代码
 测试结果:
 
 第二个例程:
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;
public class ConsumerTest {
	public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        Consumer <String> consumer  = x -> {
            if (x.startsWith("a")){
                list.add(x);
            }
        };
        Stream.of( "aa","bb","cac","abd","ee" ).forEach(consumer);
        list.forEach(System.out::println);
	}
}
测试结果:
 
 未完待续



















