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
*/