国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java 8 新特性之函數式接口

xiaotianyi / 588人閱讀

摘要:返回結果的類型實例產生指定個數的隨機整數,并放入到集合中函數型接口有一個參數和一個返回值的函數表示接受一個參數并生成結果返回的函數。

1. 概述 1.1 簡介

在開發中使用 Lambda 表達式時,我們如果每次都自己定義函數接口也是一件很麻煩的事情,所以java 8 已經提供了一個函數式接口供我們來使用。最常用的接口包括 FunctionPredicateSupplierConsumer,它們是在 java.util.function 包中定義的,平常基本的使用都是可以滿足的,如果再有其它滿足不了的需求,再進行自定義接口

2. 內置函數接口 2.1 Consumer 消費型接口

只有一個參數,且沒有返回值的函數

/**
 * 表示接受單個輸入參數且不返回結果的操作。
 *
 * @param  輸入到操作的類型
 */
@FunctionalInterface
public interface Consumer {

    void accept(T t);
}
1. 實例
@Test
public void t1(){
    handle(100,(x) -> System.out.println("handle result : " + x * x));
}

public void handle(Integer m,Consumer consumer) {
    consumer.accept(m);
}
2.2 Supplier 供給型接口

沒有參數,且只有一個返回值的函數

/**
 * 表示結果的提供者。
 *
 * 沒有要求每次調用供應商時都返回一個新的或不同的結果。
 * 
 * @param  supplier 返回結果的類型
 */
@FunctionalInterface
public interface Supplier {

    T get();
}
1. 實例

產生指定個數的隨機整數,并放入到集合中

@Test
public void t2(){
    List list = getRandomNumList(10,() -> (int)(Math.random() * 100));
    System.out.println(list.toString());
}

public List getRandomNumList(Integer limit, Supplier supplier) {
    List list = new ArrayList<>();
    for (int i = 0 ; i < limit ; i++){
        list.add(supplier.get());
    }
    return list;
}
2.3 Function 函數型接口

有一個參數和一個返回值的函數

/**
 * 表示接受一個參數并生成結果返回的函數。
 *
 * @param  函數的輸入類型
 * @param  函數的返回類型
 */
@FunctionalInterface
public interface Function {

    R apply(T t);
}
1. 實例

根據規則處理字符串

@Test
public void t3() {
    // 去除空格
    String str = strHandler(" abcdef    ",(x) -> x.trim());
    System.out.println("*" + str + "*");
}

/**
 * 根據規則處理字符串
 *
 * @param str 待處理字符串
 * @param func Function 函數
 * @return 處理結果
 */
public String strHandler(String str, Function func) {
    return func.apply(str);
}
2.4 Predicate 斷言型接口
/**
 * 布爾值函數。
 *
 * @param  被判斷對象的類型
 */
@FunctionalInterface
public interface Predicate {

    boolean test(T t);
}
1. 實例

過濾滿足條件的整數并返回

@Test
public void t4() {
    List initList = Arrays.asList(3,2,45,32,1,30,10,49,48,6,7,0,8);
    List list = filterNum(initList,(x) -> x > 10);
    System.out.println("list : " + list.toString());
}

/**
 * 過濾滿足條件的整數并返回
 *
 * @param list
 * @param predicate
 * @return
 */
public List filterNum(List list, Predicate predicate) {
    List resList = new ArrayList<>();
    for (int i : list) {
        if (predicate.test(i)) {
            resList.add(i);
        }
    }
    return resList;
}
2.5 其他接口
函數式接口 參數類型 返回類型 用途
BiFunction T, U R 對類型為 T, U 參數應用操作,返回 R 類型的結果,包含方法為 R apply(T t,U u)
UnaryOperator (Function 子接口) T T 對類型為 T 的對象進行一元運算,并返回 T 類型的結果,包含方法為 T apply(T t)
BinaryOperator (BiFunction 子接口) T, T T 對類型為 T 的對象進行二元運算,并返回 T 類型的結果,包含方法為 T apply(T t1, T t2)
BiConsumer T, U void 對類型為 T, U 應用操作,包含方法為 void accept(T t, U u)
ToIntFunction T int 計算 int 值得函數
ToLongBiFunction T long 計算 long 值得函數
ToDoubleFunction T double 計算 double 值得函數
IntFunction int R 參數為 int 類型的函數
LongFunction long R 參數為 long 類型的函數
DoubleFunction double R 參數為 double 類型的函數
本文首發于凌風博客:Java 8 新特性之函數式接口
作者:凌風

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72742.html

相關文章

  • Java 8 特性Lambda表達

    摘要:概述簡介是一個匿名函數,我們可以把表達式理解為是一段可以傳遞的代碼將代碼像數據一樣進行傳遞。作為一種更緊湊的代碼風格,使的語言表達能力得到了提升。任何滿足單一抽象方法法則的接口,都會被自動視為函數接口。 1. 概述 1.1 簡介 Lambda 是一個匿名函數,我們可以把 Lambda 表達式理解為是一段可以傳遞的代碼(將代碼像數據一樣進行傳遞)。可以寫出更簡潔、更靈活的代碼。作為一種更...

    Ververica 評論0 收藏0
  • Java8 lambda 表達、方法引用、函數接口、默認方、靜態方法

    摘要:歐陽思海繼承接口后,又加了新的抽象方法,這個接口就不再是函數式接口默認方法在接口中添加了一個默認方法。總結在這篇文章中,我們講了表達式方法引用函數式接口接口中的靜態方法接口中的默認方法的使用。 今天我來聊聊 Java8 的一些新的特性,確實 Java8 的新特性的出現,給開發者帶來了非常大的便利,可能剛剛開始的時候會有點不習慣的這種寫法,但是,當你真正的熟悉了之后,你一定會愛上這些新的...

    isLishude 評論0 收藏0
  • 樂字節-Java8特性函數接口

    摘要:上一篇小樂帶大家學過新特性表達式,什么時候可以使用通常表達式是用在函數式接口上使用的。使用實現創建產生一個工廠對象以上就是小樂帶給大家的新特性之函數式接口,下一篇將會為大家帶來新特性之方法引用,敬請關注。 上一篇小樂帶大家學過 Java8新特性-Lambda表達式,什么時候可以使用Lambda?通常Lambda表達式是用在函數式接口上使用的。從Java8開始引入了函數式接口,其說明比較...

    lakeside 評論0 收藏0
  • 樂字節-Java8核心特性實戰函數接口

    摘要:大家好,上一篇小樂給大家講述了樂字節核心特性表達式,點擊回顧。接下來繼續核心特性之函數式接口。感謝大家欣賞小樂帶來的核心特性之函數式接口,接下來還會更多核心技術講解,請關注樂字節如需要視頻課程,請搜索樂字節騰訊課堂 大家好,上一篇小樂給大家講述了《樂字節-Java8核心特性-Lambda表達式》,點擊回顧。接下來繼續:Java8核心特性之函數式接口。 什么時候可以使用Lambda?通常...

    niceforbear 評論0 收藏0
  • 深入淺出 Java 8 Lambda 表達

    摘要:在支持一類函數的語言中,表達式的類型將是函數。匿名函數的返回類型與該主體表達式一致如果表達式的主體包含一條以上語句,則表達式必須包含在花括號中形成代碼塊。注意,使用表達式的方法不止一種。 摘要:此篇文章主要介紹 Java8 Lambda 表達式產生的背景和用法,以及 Lambda 表達式與匿名類的不同等。本文系 OneAPM 工程師編譯整理。 Java 是一流的面向對象語言,除了部分簡...

    wdzgege 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<