map和flatMap都是Java8新语法stream的方法,map很常用,就是传入一个元素,返回1个元素(null也算元素),它的方法签名用的是Function<T, R>,调用方法是R apply(T t)
贴个代码,直观点:
img1.jpg img2.jpg
补充:img1中还有mapToDouble,mapToInt,mapToLong,这些方法的map映射,转换之后生成对应的double,int,long类型,避免频繁的装箱和拆箱,来达到提高效率。
再来说说flatMap,从img1中就可以看到它返回的类型是一个流,从这里就说明了它返回的是1个或多个元素(null不算)
贴代码(场景:多个单词,重复的字母不显示)
@Test
public void test2(){
List<String> list = Arrays.asList("Hello", "World");
List<String> collect = list.stream()
.map(e -> e.split("")) // 分割为数组
.flatMap(array -> Arrays.stream(array)) // 把数组转为流
.distinct() // 去重
.collect(Collectors.toList()); // 转为List集合
System.out.println(collect);
// 打印结果:[H, e, l, o, W, r, d]
}
网友评论