package com.thread;
import cn.hutool.core.map.MapUtil;
import java.util.Map;
import java.util.function.BiConsumer;
public class BiConsumerT {
public static void main(String[] args) {
/**
* BiConsumer是一个函数式接口,代表一个接受两个输入参数且不返回任何内容的操作符
*/
// accept();
andThen();
}
private static void accept() {
Bi bi = new Bi();
// BiConsumer<String, String> processor = (firstName, lastName) -> bi.printPersonInfo(firstName, lastName); 等同于如下:
BiConsumer<String, String> processor = bi::printPersonInfo;
Map<String, String> infoMap = MapUtil.newHashMap();
infoMap.put("zhao", "shuai11");
infoMap.put("li", "shuai11");
infoMap.put("wang", "shuai11");
/**
* for (Map.Entry<String, String> entry : infoMap.entrySet()) {
* String key = entry.getKey();
* String value = entry.getValue();
* processor.accept(key, value);
* }
*/
infoMap.forEach(processor);
}
private static void andThen() {
/**
* default BiConsumer<T, U> andThen(BiConsumer<? super T, ? super U> after) {
* Objects.requireNonNull(after);
*
* return (l, r) -> {
* accept(l, r);
* after.accept(l, r);
* };
* }
*/
Bi bi = new Bi();
Map<String, String> infoMap = MapUtil.newHashMap();
infoMap.put("zhao", "shuai11");
infoMap.put("li", "shuai11");
infoMap.put("wang", "shuai11");
BiConsumer<String, String> processor_1 = bi::printPersonInfo;
BiConsumer<String, String> processor_2 = bi::printPersonInfoUppperCase;
infoMap.forEach(processor_1.andThen(processor_2));
// 输出:
/**
* Hello - wangshuai11
* Hello - WANGSHUAI11
* Hello - zhaoshuai11
* Hello - ZHAOSHUAI11
* Hello - lishuai11
* Hello - LISHUAI11
*/
}
}
class Bi {
public void printPersonInfo(String firstName, String lastName) {
System.out.println("Hello - " + firstName + lastName);
}
public void printPersonInfoUppperCase(String firstName, String lastName) {
System.out.println("Hello - " + firstName.toUpperCase() + lastName.toUpperCase());
}
}
BiConsumer是一个函数式接口,代表一个接受两个输入参数且不返回任何内容的操作符
于 2022-11-11 10:13:45 首次发布