亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

xiaotianyi / 651人閱讀

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

1. 概述 1.1 簡介

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

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

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

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

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

    T get();
}
1. 實例

產(chǎn)生指定個數(shù)的隨機(jī)整數(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ù)并生成結(jié)果返回的函數(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 處理結(jié)果
 */
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ù)應(yīng)用操作,返回 R 類型的結(jié)果,包含方法為 R apply(T t,U u)
UnaryOperator (Function 子接口) T T 對類型為 T 的對象進(jìn)行一元運算,并返回 T 類型的結(jié)果,包含方法為 T apply(T t)
BinaryOperator (BiFunction 子接口) T, T T 對類型為 T 的對象進(jìn)行二元運算,并返回 T 類型的結(jié)果,包含方法為 T apply(T t1, T t2)
BiConsumer T, U void 對類型為 T, U 應(yīng)用操作,包含方法為 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ā)于凌風(fēng)博客:Java 8 新特性之函數(shù)式接口
作者:凌風(fēng)

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/72742.html

相關(guān)文章

  • Java 8 特性Lambda表達(dá)

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

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

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

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

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

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

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

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

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

    wdzgege 評論0 收藏0

發(fā)表評論

0條評論

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