摘要:返回結果的類型實例產(chǎn)生指定個數(shù)的隨機整數(shù),并放入到集合中函數(shù)型接口有一個參數(shù)和一個返回值的函數(shù)表示接受一個參數(shù)并生成結果返回的函數(shù)。
1. 概述 1.1 簡介
在開發(fā)中使用 Lambda 表達式時,我們?nèi)绻看味甲约憾x函數(shù)接口也是一件很麻煩的事情,所以java 8 已經(jīng)提供了一個函數(shù)式接口供我們來使用。最常用的接口包括 Function
只有一個參數(shù),且沒有返回值的函數(shù)
/** * 表示接受單個輸入?yún)?shù)且不返回結果的操作。 * * @param1. 實例輸入到操作的類型 */ @FunctionalInterface public interface Consumer { void accept(T t); }
@Test public void t1(){ handle(100,(x) -> System.out.println("handle result : " + x * x)); } public void handle(Integer m,Consumer2.2 Supplierconsumer) { consumer.accept(m); }
沒有參數(shù),且只有一個返回值的函數(shù)
/** * 表示結果的提供者。 * * 沒有要求每次調(diào)用供應商時都返回一個新的或不同的結果。 * * @param1. 實例supplier 返回結果的類型 */ @FunctionalInterface public interface Supplier { T get(); }
產(chǎn)生指定個數(shù)的隨機整數(shù),并放入到集合中
@Test public void t2(){ List2.3 Functionlist = 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; }
有一個參數(shù)和一個返回值的函數(shù)
/** * 表示接受一個參數(shù)并生成結果返回的函數(shù)。 * * @param1. 實例函數(shù)的輸入類型 * @param 函數(shù)的返回類型 */ @FunctionalInterface public interface Function { R apply(T t); }
根據(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, Function2.4 Predicatefunc) { return func.apply(str); }
/** * 布爾值函數(shù)。 * * @param1. 實例被判斷對象的類型 */ @FunctionalInterface public interface Predicate { boolean test(T t); }
過濾滿足條件的整數(shù)并返回
@Test public void t4() { List2.5 其他接口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; }
函數(shù)式接口 | 參數(shù)類型 | 返回類型 | 用途 |
---|---|---|---|
BiFunction |
T, U | R | 對類型為 T, U 參數(shù)應用操作,返回 R 類型的結果,包含方法為 R apply(T t,U u) |
UnaryOperator |
T | T | 對類型為 T 的對象進行一元運算,并返回 T 類型的結果,包含方法為 T apply(T t) |
BinaryOperator |
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
摘要:概述簡介是一個匿名函數(shù),我們可以把表達式理解為是一段可以傳遞的代碼將代碼像數(shù)據(jù)一樣進行傳遞。作為一種更緊湊的代碼風格,使的語言表達能力得到了提升。任何滿足單一抽象方法法則的接口,都會被自動視為函數(shù)接口。 1. 概述 1.1 簡介 Lambda 是一個匿名函數(shù),我們可以把 Lambda 表達式理解為是一段可以傳遞的代碼(將代碼像數(shù)據(jù)一樣進行傳遞)??梢詫懗龈啙?、更靈活的代碼。作為一種更...
摘要:歐陽思海繼承接口后,又加了新的抽象方法,這個接口就不再是函數(shù)式接口默認方法在接口中添加了一個默認方法??偨Y在這篇文章中,我們講了表達式方法引用函數(shù)式接口接口中的靜態(tài)方法接口中的默認方法的使用。 今天我來聊聊 Java8 的一些新的特性,確實 Java8 的新特性的出現(xiàn),給開發(fā)者帶來了非常大的便利,可能剛剛開始的時候會有點不習慣的這種寫法,但是,當你真正的熟悉了之后,你一定會愛上這些新的...
摘要:上一篇小樂帶大家學過新特性表達式,什么時候可以使用通常表達式是用在函數(shù)式接口上使用的。使用實現(xiàn)創(chuàng)建產(chǎn)生一個工廠對象以上就是小樂帶給大家的新特性之函數(shù)式接口,下一篇將會為大家?guī)硇绿匦灾椒ㄒ?,敬請關注。 上一篇小樂帶大家學過 Java8新特性-Lambda表達式,什么時候可以使用Lambda?通常Lambda表達式是用在函數(shù)式接口上使用的。從Java8開始引入了函數(shù)式接口,其說明比較...
摘要:大家好,上一篇小樂給大家講述了樂字節(jié)核心特性表達式,點擊回顧。接下來繼續(xù)核心特性之函數(shù)式接口。感謝大家欣賞小樂帶來的核心特性之函數(shù)式接口,接下來還會更多核心技術講解,請關注樂字節(jié)如需要視頻課程,請搜索樂字節(jié)騰訊課堂 大家好,上一篇小樂給大家講述了《樂字節(jié)-Java8核心特性-Lambda表達式》,點擊回顧。接下來繼續(xù):Java8核心特性之函數(shù)式接口。 什么時候可以使用Lambda?通常...
摘要:在支持一類函數(shù)的語言中,表達式的類型將是函數(shù)。匿名函數(shù)的返回類型與該主體表達式一致如果表達式的主體包含一條以上語句,則表達式必須包含在花括號中形成代碼塊。注意,使用表達式的方法不止一種。 摘要:此篇文章主要介紹 Java8 Lambda 表達式產(chǎn)生的背景和用法,以及 Lambda 表達式與匿名類的不同等。本文系 OneAPM 工程師編譯整理。 Java 是一流的面向?qū)ο笳Z言,除了部分簡...
閱讀 2585·2021-09-26 10:13
閱讀 6000·2021-09-08 10:46
閱讀 696·2019-08-30 15:53
閱讀 2970·2019-08-29 16:13
閱讀 2763·2019-08-26 12:23
閱讀 3490·2019-08-26 11:24
閱讀 1097·2019-08-23 18:09
閱讀 1036·2019-08-23 17:08