2 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
你這個(gè)例子中 lambda 表達(dá)式就是這個(gè)部分: id?-> id.equals(combinationSku.getSkuId())
lambda 表達(dá)式的語(yǔ)法是:(參數(shù)...) -> 語(yǔ)句或語(yǔ)句塊。 如果參數(shù)只有一個(gè),那參數(shù)列表的括號(hào)可以省略。
lambda 表達(dá)式的功能是:它接受這些參數(shù),在執(zhí)行時(shí)會(huì)執(zhí)行 -> 后面的語(yǔ)句或語(yǔ)句塊。 所以這個(gè) lambda 表達(dá)式會(huì)接受 id 作參數(shù)(id 是參數(shù)名,先別管參數(shù)類型是什么),并且在執(zhí)行時(shí)就執(zhí)行?id.equals(combinationSku.getSkuId()) 這條語(yǔ)句,表達(dá)式的返回值也就是該語(yǔ)句的返回值。
這個(gè) lambda 用在 filter() 中。filter 的參數(shù)是一個(gè)過(guò)濾條件,filter 把這個(gè)過(guò)濾條件應(yīng)用到每個(gè) stream 的元素上,然后 filter 會(huì)返回滿足過(guò)濾條件的子 stream。 ?而這個(gè)過(guò)濾條件要求輸入的是元素,返回的是判斷后的 boolean?結(jié)果(true代表通過(guò)了過(guò)濾)。
這里這個(gè)過(guò)濾條件就是用 lambda 表達(dá)式來(lái)表示的。lambda 中的 id 就代表每次判斷時(shí)的元素,而 lambda 執(zhí)行的具體代碼?id.equals(combinationSku.getSkuId()) 就是用于判斷的代碼。你可以看到這個(gè)代碼的返回類型就是 boolean,其代表了判斷結(jié)果。
對(duì) lambda 表達(dá)式的詳解需要你理解 interface 及 functional interface,我不知道你學(xué)到它們了嗎?
不了解也沒(méi)關(guān)系,lambda 表達(dá)式的作用就是上面所說(shuō)的,目前你知道 lambda 表達(dá)式可以這樣用就行了。
添加回答
舉報(bào)