map和flatMap都是Java8新語(yǔ)法stream的方法,map很常用喂江,就是傳入一個(gè)元素胆敞,返回1個(gè)元素(null也算元素),它的方法簽名用的是Function<T, R>,調(diào)用方法是R apply(T t)
貼個(gè)代碼携悯,直觀點(diǎn):
補(bǔ)充:img1中還有mapToDouble,mapToInt,mapToLong,這些方法的map映射祭芦,轉(zhuǎn)換之后生成對(duì)應(yīng)的double,int憔鬼,long類型龟劲,避免頻繁的裝箱和拆箱胃夏,來(lái)達(dá)到提高效率。
再來(lái)說(shuō)說(shuō)flatMap昌跌,從img1中就可以看到它返回的類型是一個(gè)流仰禀,從這里就說(shuō)明了它返回的是1個(gè)或多個(gè)元素(null不算)
貼代碼(場(chǎng)景:多個(gè)單詞,重復(fù)的字母不顯示)
@Test
public void test2(){
List<String> list = Arrays.asList("Hello", "World");
List<String> collect = list.stream()
.map(e -> e.split("")) // 分割為數(shù)組
.flatMap(array -> Arrays.stream(array)) // 把數(shù)組轉(zhuǎn)為流
.distinct() // 去重
.collect(Collectors.toList()); // 轉(zhuǎn)為L(zhǎng)ist集合
System.out.println(collect);
// 打印結(jié)果:[H, e, l, o, W, r, d]
}