map
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
map 方法接收一個功能型接口,功能型接口接收一個參數(shù),返回一個值。map 方法的用途是將舊數(shù)據(jù)轉(zhuǎn)換后變?yōu)樾聰?shù)據(jù),是一種 1:1 的映射,每個輸入元素按照規(guī)則轉(zhuǎn)換成另一個元素。該方法是 Intermediate 操作
Stream<String> stream = Stream.of("a", "b", "c", "d");
stream.map(String::toUpperCase).forEach(System.out::println);
以上代碼通過 map 方法,把 a, b, c, d 全部轉(zhuǎn)變成大寫,然后輸出
forEach
void forEach(Consumer<? super T> action)
forEach 接收一個 Consumer 接口,該接口我們之前講 Function 包時已經(jīng)提過了。它只接收不參數(shù),沒有返回值。然后在 Stream 的每一個元素上執(zhí)行該表達(dá)式
范例:
Stream<String> stream = Stream.of("I", "love", "you");
stream.forEach(System.out::println);
區(qū)別
生成一個新的對象的時候,使用 map 會更好;只是操作 list 內(nèi)部的對象時,用 forEach
這段代碼,是無效的(appList 不會變化):
appMemberList.stream().map(appMember -> appList.add(appMember.getApp()));
要改成 forEach 才行
appMemberList.stream().forEach(appMember -> appList.add(appMember.getApp()));