package com.hxg.test;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
/**
* 函数式接口
*/
public class FunctionTest {
@Test
public void function() {
System.out.println(functionMethod(v -> String.format("%s_%s", v.get("name"), v.get("city"))));
}
/**
* 数据类型转换 数据处理(外部指定处理方式)
*
* @param mapper 第一个范型为接收类型,第二个范型为返回值
*/
private String functionMethod(Function<Map<String, String>, String> mapper) {
Map<String, String> map = new HashMap<>();
map.put("name", "张三");
map.put("city", "上海");
// 业务逻辑处理
return mapper.apply(map);
}
@Test
public void consumer() {
functionConsumer(list -> {
for (Integer data : list) {
System.out.println(data);
}
});
}
/**
* 生产数据 并由外部指定数据处理方式
*
* @param processData 数据处理方式
*/
private void functionConsumer(Consumer<List<Integer>> processData) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(5);
processData.accept(list);
}
@Test
public void supplier() {
functionSupplier(() -> "调用处传参。");
}
/**
* 外部传入指定数据获取的方式
*
* @param supplier 提供者
*/
private void functionSupplier(Supplier<String> supplier) {
System.out.println(supplier.get());
}
@Test
public void predicate() {
System.out.println(functionPredicate(v -> v.contains("hello")));
}
private boolean functionPredicate(Predicate<String> predicate) {
return predicate.test("hello world.");
}
}
java8 函数式接口Function、Consumer、Supplier、Predicate
最新推荐文章于 2024-04-23 16:29:27 发布