1、四大核心函数式接口
接口类型 | 表现形式 | 实现方法 | 说明 |
消费性接口 | Consumer<T> | void accept<T t> | 参数为 t,无返回值 |
供给型接口 | Supplier<T> | T get() | 无参数,返回值类型为 T |
函数型接口 | Function<T,R> | R apply(T t) | 参数为 t,返回值类型为 R |
断言型接口 | Predicate<T> | Boolean test(T t) | 参数为 t,返回值类型为 Boolean |
2、四大核心函数接口实践
public class LambdaDemo { // 1、消费性接口测试 @Test public void testLambda01() { someThingHappy("summer", (x) -> { String str = x; System.out.println("某个人喜欢大保健,他觉得只有大保健能让他快乐,这个人就是 " + x); }); } // 2、供给型接口测试 @Test public void testLambda02() { List<String> strEqualTo5 = getStrEqualTo5(() -> { String[] strArr = {"summer", "erico", "puff", "defire", "hank"}; List<String> list = Arrays.asList(strArr); ArrayList<String> strList = new ArrayList<>(); for (String str : list) { if (str.length() == 4) { strList.add(str); } } return strList; }); System.out.println(strEqualTo5); } // 3、函数型接口测试 @Test public void testLambda03() { Integer index = getIndexFromArray((x) -> { int i = 0; for (int j = 0; j < x.length; j++) { if (Objects.equals(x[j], "summer")) { i = j; } } return i; }); System.out.println(index); } // 4、断言型接口测试 @Test public void testLambda04() { Boolean isEricoExists = checkUser((x) -> { Boolean flag = false; for (String str : x) { if (Objects.equals(str, "erico")) { flag = true; } } return flag; }); System.out.println(isEricoExists); } // 需求 1、输出一段快乐的话 // Consumer<T> : 消费性接口 // void accept(T t) public void someThingHappy(String userName, Consumer<String> consumer) { consumer.accept(userName); } // 需求 2、返回一个集合,集合中存放长度等于 5 的字符串 // Supplier<T> : 供给型接口 // T get(); public List<String> getStrEqualTo5(Supplier<List<String>> supplier) { return supplier.get(); } // 需求 3、筛选出名称为 summer 的用户,并返回其在数组中的索引位置 // Function<T,R> // R apply(T t) public Integer getIndexFromArray(Function<String[], Integer> function) { String[] strArr = {"erico", "puff", "defire", "hank", "summer"}; return function.apply(strArr); } // 需求 4、判断指定的集合中是否存在一个叫 erico 的人 // Predicate<T> // Boolean test<T> public Boolean checkUser(Predicate<List<String>> predicate) { String[] strArr = {"erico", "puff", "defire", "hank", "summer"}; List<String> listStr = Arrays.asList(strArr); return predicate.test(listStr); } }