2 回答

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