1、Comsumer简介
源码
import java.util.Objects;
@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); };
}
}
案例:
package com.xian.thread.lambda;
import org.junit.Test;
import java.util.function.Consumer;
import java.util.stream.Stream;
/**
* 消费型接口:Consumer
*/
public class ConsumerTest {
@Test
public void test() {
// 原写法
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s.toUpperCase());
}
};
consumer.accept("Tom and Jerry");
// lambda写法
Consumer<String> consumer1 = s -> System.out.println(s.toUpperCase());
consumer1.accept("Tom and Jerry");
/**
* TOM AND JERRY
* TOM AND JERRY
*/
}
@Test
public void andThenTest() {
String[] arr = {"张三:18", "李四:25", "王五:28"};
Stream.of(arr).forEach(str -> {
andThenTest(str,
st -> System.out.println("姓名:"+st.split(":")[0]),
st -> System.out.println("年龄:"+st.split(":")[1]));
});
/**
* 结果:
* 姓名:张三
* 年龄:18
* 姓名:李四
* 年龄:25
* 姓名:王五
* 年龄:28
*/
}
public <T> void andThenTest(T str, Consumer<T> consumer1, Consumer<T> consumer2) {
consumer1.andThen(consumer2).accept(str);
}
}