Java 8 內建四大核心函式式介面
阿新 • • 發佈:2021-06-19
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 |
ssssssssssssss
dddddddd
ssssssssssss
ssss
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); } }