成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 8 新特性之函數(shù)式接口

xiaotianyi / 600人閱讀

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

1. 概述 1.1 簡介

在開發(fā)中使用 Lambda 表達式時,我們?nèi)绻看味甲约憾x函數(shù)接口也是一件很麻煩的事情,所以java 8 已經(jīng)提供了一個函數(shù)式接口供我們來使用。最常用的接口包括 Function、Predicate 、SupplierConsumer,它們是在 java.util.function 包中定義的,平常基本的使用都是可以滿足的,如果再有其它滿足不了的需求,再進行自定義接口

2. 內(nèi)置函數(shù)接口 2.1 Consumer 消費型接口

只有一個參數(shù),且沒有返回值的函數(shù)

/**
 * 表示接受單個輸入?yún)?shù)且不返回結果的操作。
 *
 * @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 供給型接口

沒有參數(shù),且只有一個返回值的函數(shù)

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

    T get();
}
1. 實例

產(chǎn)生指定個數(shù)的隨機整數(shù),并放入到集合中

@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 函數(shù)型接口

有一個參數(shù)和一個返回值的函數(shù)

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

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

根據(jù)規(guī)則處理字符串

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

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

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

過濾滿足條件的整數(shù)并返回

@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());
}

/**
 * 過濾滿足條件的整數(shù)并返回
 *
 * @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 其他接口
函數(shù)式接口 參數(shù)類型 返回類型 用途
BiFunction T, U R 對類型為 T, U 參數(shù)應用操作,返回 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 值得函數(shù)
ToLongBiFunction T long 計算 long 值得函數(shù)
ToDoubleFunction T double 計算 double 值得函數(shù)
IntFunction int R 參數(shù)為 int 類型的函數(shù)
LongFunction long R 參數(shù)為 long 類型的函數(shù)
DoubleFunction double R 參數(shù)為 double 類型的函數(shù)
本文首發(fā)于凌風博客:Java 8 新特性之函數(shù)式接口
作者:凌風

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

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

相關文章

  • Java 8 特性Lambda表達

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

    Ververica 評論0 收藏0
  • Java8 lambda 表達、方法引用、函數(shù)接口、默認方、靜態(tài)方法

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

    isLishude 評論0 收藏0
  • 樂字節(jié)-Java8特性函數(shù)接口

    摘要:上一篇小樂帶大家學過新特性表達式,什么時候可以使用通常表達式是用在函數(shù)式接口上使用的。使用實現(xiàn)創(chuàng)建產(chǎn)生一個工廠對象以上就是小樂帶給大家的新特性之函數(shù)式接口,下一篇將會為大家?guī)硇绿匦灾椒ㄒ?,敬請關注。 上一篇小樂帶大家學過 Java8新特性-Lambda表達式,什么時候可以使用Lambda?通常Lambda表達式是用在函數(shù)式接口上使用的。從Java8開始引入了函數(shù)式接口,其說明比較...

    lakeside 評論0 收藏0
  • 樂字節(jié)-Java8核心特性實戰(zhàn)函數(shù)接口

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

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

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

    wdzgege 評論0 收藏0

發(fā)表評論

0條評論

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