大綱:
- 異同點
- 示例
一、異同點
他們的相同點是接收的入參都是一個function。
不同點這個入參function的返回不同。map返回一個對象,flatmap返回一個stream。
這就使得map是一對一的處理,得到的stream中元素的數量和原始數量一致,而flatmap返回stream這就使得flatmap可以具備一對多的處理能力。最后這個function的stream匯聚到一個stream中,數量可以多於原始元素的數量。
二、示例
public static void main(String[] args) { List<String> list = Arrays.asList("a1","a2","a3"); list.stream().map(s->s+"test").forEach(System.out::println);//一對一的處理,在每個字符串后面加上test輸出 list.stream().flatMap(s -> Stream.of(s.split(""))).forEach(System.out::println);//一對多的處理,把每個字符串拆成一個個字符,輸出,這點map就無法做到。 }
