map & flatMap
這兩個函數經常被使用。它們有如下區別:
map
把數組流
中的每一個值,使用所提供的函數執行一遍,一一對應。得到元素個數相同的數組流
。
flatMap
flat是扁平的意思。它把數組流
中的每一個值,使用所提供的函數執行一遍,一一對應。得到元素相同的數組流
。只不過,裏面的元素也是一個子數組流
。把這些子數組合併成一個數組以後,元素個數大概率會和原數組流
的個數不同。
@org.junit.Test
public void testFlatMap() {
System.out.println("test map:");
Stream.of(1, 2, 3).map(n -> n * 100)
.forEach(System.out::println);
System.out.println("test flatMap:");
Stream.of(1, 2, 3).flatMap(n -> n <= 2 ? Stream.of(n, n * 100) : Stream.of(n))
.forEach(System.out::println);
}
/**
輸出結果:
test map:
100
200
300
test flatMap:
1
100
2
200
3
*/