Java8函數(shù)式編程之二 : Lambda表達(dá)式

針對(duì)上篇博客Java8函數(shù)式編程之一: 行為參數(shù)化 - 簡(jiǎn)書(shū)?最后留下的問(wèn)題哲泊,也就是java8怎樣解決匿名內(nèi)部類(lèi)代碼難看疤祭,臃腫的的問(wèn)題湾揽,我們先來(lái)看一下解決方法旅挤,使用Lambda表達(dá)式:

//使用匿名內(nèi)部類(lèi)

List tradeInAmerica =filterTrade(trades,newTradePredicate() {

@Override

public booleantest(Trade trade) {

return"America".equals(trade.getCountry());

}

});

//使用Lambda表達(dá)式

List list =filterTrade(trades,(Trade trade) ->"America".equals(trade.getCountry()));

——————————————————————————

有沒(méi)有覺(jué)得很神奇踢关,只要一行代碼就可以代替上面 那么多行代碼。即使現(xiàn)在你覺(jué)得疑惑也沒(méi)有關(guān)系粘茄,我們先看一個(gè)Wiki對(duì)Lambda的定義:

lambda expression in computer programming, also calledanonymous function, a function (or a subroutine) defined, and possibly called, without being bound to an identifier

相信你看懂了幾個(gè)重要的單詞:操作符签舞,匿名函數(shù)。

Lambda表達(dá)式可以理解為一種匿名函數(shù):它沒(méi)有名稱(chēng)柒瓣,但是有參數(shù)列表儒搭,函數(shù)主體,返回類(lèi)型芙贫。

Java Lambda表達(dá)式是一種匿名函數(shù)搂鲫;它是沒(méi)有聲明的方法,即沒(méi)有訪問(wèn)修飾符磺平,返回值聲明和名字魂仍。

————————

Lambda表達(dá)式的作用:

1.傳遞行為拐辽,而不僅僅是值

2.提升抽象層次

3.API重用性更好

4.更加靈活

————

像(Trade trade) ->"America".equals(trade.getCountry()) 一樣,Lambda分為三部分:

1.參數(shù)列表 - 比如trade就是一個(gè)參數(shù)列表

2.箭頭操作符 - 把參數(shù)列表與Lanbda主體分隔開(kāi)

3.Lambda主體 ?-"America".equals(trade.getCountry()

——————————————————

1.一個(gè)Lambda表達(dá)式可以有0個(gè)或者多個(gè)參數(shù)擦酌;

2.參數(shù)的類(lèi)型既可以明確聲明薛训,也可以根據(jù)上下文來(lái)推斷。比如:(int a) 與(a) 效果相同仑氛。

3.所有參數(shù)需要包含在圓括號(hào)內(nèi)乙埃,參數(shù)之間用逗號(hào)隔開(kāi)。比如: (a,b) ?或者 (int a, int b)或者 (String a, int b, float c)

4.空?qǐng)A括號(hào)代表參數(shù)集為空锯岖。比如: () -> 42

5.當(dāng)只有一個(gè)參數(shù)介袜,并且類(lèi)型可以推導(dǎo)時(shí),圓括號(hào)()可以省略出吹。比如: a -> return a * a

6.Lambda表達(dá)式的主體可以包含0條或者多條語(yǔ)句

7.如果Lambda表達(dá)式的主體只有一條語(yǔ)句遇伞,花括號(hào){}可以省略。匿名函數(shù)的返回類(lèi)型與該主體表達(dá)式一致捶牢。

8.如果Lambda表達(dá)式的主體包含一條以上語(yǔ)句鸠珠,則表達(dá)式必須包含在花括號(hào)中。

——————

Lambda表達(dá)式的語(yǔ)法格式是:

(parameters ) ?-> { expression} ? 或者 ?(parameters) -> {statements}

Lambda表達(dá)式的使用實(shí)例:

布爾表達(dá)式 : (List ?list) ?-> list.isEmpty()

創(chuàng)建對(duì)象 : () -> new Apple(10)

消費(fèi)一個(gè)對(duì)象:(Trade trade) ?-> {System.out.println(trade.getMoney())}

從一個(gè)對(duì)象中選擇:(String s) -> s.length()

組合兩個(gè)值 : (int a, int b) -> a * b

比較兩個(gè)對(duì)象 : (Trade trade1,Trade trade2) -> trade1.getMoney().compareTo(trade2.getMoney())

————————————————————

好了秋麸,這就是Lambda表達(dá)式的介紹渐排,如果你還是不熟悉,不用擔(dān)心灸蟆,后面我們會(huì)大量的使用Lambda表達(dá)式驯耻,熟能生巧!

你是否有疑問(wèn)炒考,Lambda表達(dá)式在哪里使用呢以及如何使用呢可缚?

答案是在函數(shù)式接口上使用Lambda表達(dá)式。哈哈斋枢,你肯定還會(huì)繼續(xù)問(wèn):什么是函數(shù)式接口呢帘靡?

要了解這個(gè)問(wèn)題,請(qǐng)看下一篇博客Java8函數(shù)式編程之三:函數(shù)式接口 - 簡(jiǎn)書(shū)?瓤帚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末描姚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缘滥,更是在濱河造成了極大的恐慌轰胁,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朝扼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡霎肯,警方通過(guò)查閱死者的電腦和手機(jī)擎颖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)榛斯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人搂捧,你說(shuō)我怎么就攤上這事驮俗。” “怎么了允跑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵王凑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我聋丝,道長(zhǎng)索烹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任弱睦,我火速辦了婚禮百姓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘况木。我一直安慰自己垒拢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布火惊。 她就那樣靜靜地躺著求类,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屹耐。 梳的紋絲不亂的頭發(fā)上仑嗅,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音张症,去河邊找鬼仓技。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俗他,可吹牛的內(nèi)容都是我干的脖捻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兆衅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼地沮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起羡亩,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤摩疑,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后畏铆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體雷袋,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年辞居,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了楷怒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛋勺。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸠删,靈堂內(nèi)的尸體忽然破棺而出抱完,到底是詐尸還是另有隱情,我是刑警寧澤刃泡,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布巧娱,位于F島的核電站,受9級(jí)特大地震影響烘贴,放射性物質(zhì)發(fā)生泄漏禁添。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一庙楚、第九天 我趴在偏房一處隱蔽的房頂上張望上荡。 院中可真熱鬧,春花似錦馒闷、人聲如沸酪捡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逛薇。三九已至,卻和暖如春疏虫,著一層夾襖步出監(jiān)牢的瞬間永罚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工卧秘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呢袱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓翅敌,卻偏偏與公主長(zhǎng)得像羞福,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚯涮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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