Consumer的语义是消费的意思,了解一些消息队列的同学,肯定对这个单词,有一定的理解,我们先看接口的定义
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}
这个接口,接收一个泛型的参数T,然后调用accept,对这个参数做一系列的操作,没有返回值;看到这里,是不是很懵,下面用一个简单的小例子
Consumer<Integer> consumer = x -> {
int a = x + 2;
System.out.println(a);// 12
System.out.println(a + "_");// 12_
};
consumer.accept(10);
调用accept的时候,传入一个泛型T的参数Integer,然后定义参数对一系列操作,然后打印这些值;
只有调用了
consumer.accept(10);
这个函数,控制台才会 有输出;还是很懵?
其实,主要是理解Consumer,消费者,就可以了~主要是对入参做一些列的操作,在stream里,主要是用于forEach;内部迭代的时候,对传入的参数,做一系列的业务操作,没有返回值;
这个接口,只有一个默认方法,看下注释内容,就清楚用法了,就不在写案例解释了
/**传入一个Consumer类型的参数,
*他的泛型类型,
*跟本接口是一致的T,先做本接口的accept操作,
*然后在做传入的Consumer类型的参数的accept操作
*/
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
1.lambda表达式
《java8 Lambda表达式简介》
《java8 lambda表达式,方法的引用以及构造器的引用》
2.函数式接口
《java8 函数式接口简介》
3.stream接口操作
《JAVA8 Stream接口,map操作,filter操作,flatMap操作》
《JAVA8 stream接口 distinct,sorted,peek,limit,skip》
《java8 stream接口 终端操作 forEachOrdered和forEach》
《java8 stream接口 终端操作 toArray操作》
《java8 stream接口 终端操作 min,max,findFirst,findAny操作》
《java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch》
《java8 stream接口 终端操作 collect操作》
4.其他部分