package jdk8; import org.junit.Test; import java.security.PublicKey; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; /** * java8 内置四大核心接口 * * Consumer<T>: 消費型接口 * void accept(T t); * * Supplier<T>: 供給型接口 * T get(); * * Function<T, R>: 函數型接口 * R apply(T t); * * Predicate<T>: 斷言型接口 * boolean test(T t); */ public class FunctionInterfaceDemo { @Test public void testConsumer() { this.myConsumer("hello", System.out::println); } private void myConsumer(String str, Consumer<String> consumer) { consumer.accept(str); } @Test public void testSupplier() { List<Integer> integers = this.mySupplier(10, () -> (int) (Math.random() * 100)); integers.sort((t1, t2) -> -t1.compareTo(t2)); System.out.println(integers); } private List<Integer> mySupplier(int num, Supplier<Integer> supplier) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < num; i++) { Integer s = supplier.get(); list.add(s); } return list; } @Test public void testFunction() { String hello = this.myFunction("hello", s -> s + "歡迎光臨"); System.out.println(hello); } private String myFunction(String str, Function<String, String> function) { return function.apply(str + ",嘿嘿!"); } @Test public void testPredicate() { List<String> list = Arrays.asList("iiiskkaacc", "cccceea", "iills", "iijgybv"); List<String> i = this.myPredicate(list, s -> s.contains("a")); System.out.println(i); } private List<String> myPredicate(List<String> list, Predicate<String> predicate) { List<String> retList = new ArrayList<>(); for (String s : list) { if(predicate.test(s)) { retList.add(s); } } return retList; } }
java8 内置四大核心接口-DEMO
最新推荐文章于 2022-05-28 00:39:58 发布