java學(xué)習(xí):java8新特性之一通今,函數(shù)式接口

函數(shù)式接口(Functional Interface)就是一個(gè)具有一個(gè)方法的普通接口。

函數(shù)式接口可以被隱式轉(zhuǎn)換為lambda表達(dá)式漏策。

函數(shù)式接口可以現(xiàn)有的函數(shù)友好地支持 lambda臼氨。

JDK 1.8之前已有的函數(shù)式接口:

java.lang.Runnable

java.util.concurrent.Callable

java.security.PrivilegedAction

java.util.Comparator

java.io.FileFilter

java.nio.file.PathMatcher

java.lang.reflect.InvocationHandler

java.beans.PropertyChangeListener

java.awt.event.ActionListener

javax.swing.event.ChangeListener

JDK 1.8 新增加的函數(shù)接口:

java.util.function

java.util.function 它包含了很多類储矩,用來支持 Java的 函數(shù)式編程,該包中的函數(shù)式接口有:

序號(hào)接口 & 描述

1BiConsumer

代表了一個(gè)接受兩個(gè)輸入?yún)?shù)的操作即硼,并且不返回任何結(jié)果

2BiFunction

代表了一個(gè)接受兩個(gè)輸入?yún)?shù)的方法屡拨,并且返回一個(gè)結(jié)果

3BinaryOperator

代表了一個(gè)作用于于兩個(gè)同類型操作符的操作呀狼,并且返回了操作符同類型的結(jié)果

4BiPredicate

代表了一個(gè)兩個(gè)參數(shù)的boolean值方法

5BooleanSupplier

代表了boolean值結(jié)果的提供方

6Consumer

代表了接受一個(gè)輸入?yún)?shù)并且無返回的操作

7DoubleBinaryOperator

代表了作用于兩個(gè)double值操作符的操作,并且返回了一個(gè)double值的結(jié)果绝编。

8DoubleConsumer

代表一個(gè)接受double值參數(shù)的操作她奥,并且不返回結(jié)果哩俭。

9DoubleFunction

代表接受一個(gè)double值參數(shù)的方法,并且返回結(jié)果

10DoublePredicate

代表一個(gè)擁有double值參數(shù)的boolean值方法

11DoubleSupplier

代表一個(gè)double值結(jié)構(gòu)的提供方

12DoubleToIntFunction

接受一個(gè)double類型輸入砸捏,返回一個(gè)int類型結(jié)果隙赁。

13DoubleToLongFunction

接受一個(gè)double類型輸入,返回一個(gè)long類型結(jié)果

14DoubleUnaryOperator

接受一個(gè)參數(shù)同為類型double,返回值類型也為double 掂骏。

15Function

接受一個(gè)輸入?yún)?shù)厚掷,返回一個(gè)結(jié)果级解。

16IntBinaryOperator

接受兩個(gè)參數(shù)同為類型int,返回值類型也為int 勤哗。

17IntConsumer

接受一個(gè)int類型的輸入?yún)?shù)掩驱,無返回值 。

18IntFunction

接受一個(gè)int類型輸入?yún)?shù)民逼,返回一個(gè)結(jié)果 涮帘。

19IntPredicate

:接受一個(gè)int輸入?yún)?shù)焚辅,返回一個(gè)布爾值的結(jié)果。

20IntSupplier

無參數(shù)棚点,返回一個(gè)int類型結(jié)果湾蔓。

21IntToDoubleFunction

接受一個(gè)int類型輸入默责,返回一個(gè)double類型結(jié)果 。

22IntToLongFunction

接受一個(gè)int類型輸入桃序,返回一個(gè)long類型結(jié)果媒熊。

23IntUnaryOperator

接受一個(gè)參數(shù)同為類型int,返回值類型也為int 。

24LongBinaryOperator

接受兩個(gè)參數(shù)同為類型long,返回值類型也為long嚷往。

25LongConsumer

接受一個(gè)long類型的輸入?yún)?shù)柠衅,無返回值。

26LongFunction

接受一個(gè)long類型輸入?yún)?shù)贷祈,返回一個(gè)結(jié)果付燥。

27LongPredicate

R接受一個(gè)long輸入?yún)?shù)愈犹,返回一個(gè)布爾值類型結(jié)果。

28LongSupplier

無參數(shù)勋颖,返回一個(gè)結(jié)果long類型的值勋锤。

29LongToDoubleFunction

接受一個(gè)long類型輸入叁执,返回一個(gè)double類型結(jié)果。

30LongToIntFunction

接受一個(gè)long類型輸入次哈,返回一個(gè)int類型結(jié)果吆录。

31LongUnaryOperator

接受一個(gè)參數(shù)同為類型long,返回值類型也為long。

32ObjDoubleConsumer

接受一個(gè)object類型和一個(gè)double類型的輸入?yún)?shù)哀卫,無返回值撬槽。

33ObjIntConsumer

接受一個(gè)object類型和一個(gè)int類型的輸入?yún)?shù)侄柔,無返回值。

34ObjLongConsumer

接受一個(gè)object類型和一個(gè)long類型的輸入?yún)?shù)勋磕,無返回值敢靡。

35Predicate

接受一個(gè)輸入?yún)?shù),返回一個(gè)布爾值結(jié)果赶站。

36Supplier

無參數(shù),返回一個(gè)結(jié)果想括。

37ToDoubleBiFunction

接受兩個(gè)輸入?yún)?shù)烙博,返回一個(gè)double類型結(jié)果

38ToDoubleFunction

接受一個(gè)輸入?yún)?shù)渣窜,返回一個(gè)double類型結(jié)果

39ToIntBiFunction

接受兩個(gè)輸入?yún)?shù),返回一個(gè)int類型結(jié)果位迂。

40ToIntFunction

接受一個(gè)輸入?yún)?shù)详瑞,返回一個(gè)int類型結(jié)果坝橡。

41ToLongBiFunction

接受兩個(gè)輸入?yún)?shù),返回一個(gè)long類型結(jié)果刑顺。

42ToLongFunction

接受一個(gè)輸入?yún)?shù)饲常,返回一個(gè)long類型結(jié)果。

43UnaryOperator

接受一個(gè)參數(shù)為類型T,返回值類型也為T柒竞。

函數(shù)式接口實(shí)例

Predicate 接口是一個(gè)函數(shù)式接口朽基,它接受一個(gè)輸入?yún)?shù) T离陶,返回一個(gè)布爾值結(jié)果招刨。

該接口包含多種默認(rèn)方法來將Predicate組合成其他復(fù)雜的邏輯(比如:與,或打却,非)。

該接口用于測(cè)試對(duì)象是 true 或 false猿推。

我們可以通過以下實(shí)例(Java8Tester.java)來了解函數(shù)式接口 Predicate 的使用:

執(zhí)行以上腳本蹬叭,輸出結(jié)果為:

個(gè)人推薦對(duì)于這些全新的學(xué)習(xí)方法:從官方文檔出發(fā),最好從java.util.stream里開始看侈离,因?yàn)檫@里的大多數(shù)接口都會(huì)在流的操作中使用的到卦碾,官方文檔里面給出了一些簡(jiǎn)短但有效的例子,結(jié)合文檔的解釋济榨,能很好的理解這些全新的接口绿映。

本文完,來杯咖啡!

Java程序員學(xué)習(xí)交流群607225654,既有技術(shù)大佬,又有老司機(jī)開車怕品,各位對(duì)Java感興趣的可以來交流學(xué)習(xí)一下,快樂與技術(shù)一起進(jìn)步。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末珍坊,一起剝皮案震驚了整個(gè)濱河市垫蛆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌川无,老刑警劉巖虑乖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疹味,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡诫咱,警方通過查閱死者的電腦和手機(jī)洪灯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門签钩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人憎夷,你說我怎么就攤上這事昧旨⊥梦郑” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)缰雇。 經(jīng)常有香客問我械哟,道長(zhǎng),這世上最難降的妖魔是什么暇咆? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任锋爪,我火速辦了婚禮丙曙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘其骄。我一直安慰自己亏镰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布拯爽。 她就那樣靜靜地躺著索抓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毯炮。 梳的紋絲不亂的頭發(fā)上逼肯,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天桃煎,我揣著相機(jī)與錄音篮幢,去河邊找鬼。 笑死为迈,一個(gè)胖子當(dāng)著我的面吹牛三椿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播曲尸,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼赋续,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼男翰!你這毒婦竟也來了另患?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤蛾绎,失蹤者是張志新(化名)和其女友劉穎昆箕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體租冠,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹏倘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顽爹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纤泵。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖镜粤,靈堂內(nèi)的尸體忽然破棺而出捏题,到底是詐尸還是另有隱情,我是刑警寧澤肉渴,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布公荧,位于F島的核電站,受9級(jí)特大地震影響同规,放射性物質(zhì)發(fā)生泄漏循狰。R本人自食惡果不足惜窟社,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绪钥。 院中可真熱鬧灿里,春花似錦、人聲如沸昧识。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跪楞。三九已至缀去,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甸祭,已是汗流浹背缕碎。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留池户,地道東北人咏雌。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像校焦,于是被迫代替她去往敵國(guó)和親赊抖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,869評(píng)論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法寨典,類相關(guān)的語法氛雪,內(nèi)部類的語法,繼承相關(guān)的語法耸成,異常的語法报亩,線程的語...
    子非魚_t_閱讀 31,581評(píng)論 18 399
  • Java byte code 的學(xué)習(xí)意義 為啥要學(xué)java bytecode,這就跟你問我已經(jīng)會(huì)python了為...
    shanggl閱讀 1,646評(píng)論 0 3
  • 雖說春雨貴如油井氢,可若是下起來沒完沒了弦追,也著實(shí)讓人煩。這下了一夜的雨花竞,說大不大劲件,說小也不小,到早晨了還不肯停约急,可我還...
    陌罌閱讀 289評(píng)論 0 3
  • 快來的春風(fēng) 刮走凄美 一個(gè)裝有記憶的盒子 我實(shí)在不愿打開他 露出一個(gè)縫 我的神經(jīng)就被拉回從前 真是別著勁的酸 好比...
    MOON七閱讀 112評(píng)論 0 0