Stream流中map与flatMap区别

您所在的位置:网站首页 stream流获取map Stream流中map与flatMap区别

Stream流中map与flatMap区别

#Stream流中map与flatMap区别| 来源: 网络整理| 查看: 265

Stream流中map与flatMap区别 2022-01-25 17:24 Java 阅559

map和flatMap都是对流中的每一个元素,执行入参中的函数式方法,只是在函数式方法的返回值上有区别:map中函数式方法返回值为对象,也就是原始流中有n个元素,处理之后的流中元素个数也是n个。即使你在返回的时候返回了多个元素如数组,他也会把数组当成一个对象处理。flatMap中函数式方法返回值为流,flat为扁平的意思,也就是说,我们可以通过flatMap改变原始流中对象的个数,flatMap会将返回的流合并成一个流,而不是当成对象处理。

通过一个简单的例子来理解:假设有一个数组1,2,3,4,5对每个元素进行处理,当值为偶数时,则返回双个,也就是结果为:1,2,2,3,4,4,5这个时候就需要使用flatMap来处理。我们可以通过下面的示例图及代码体验一下区别:

public class Test { public static void main(String[] args) { List nums = Arrays.asList(1, 2, 3, 4, 5); List res1 = nums.stream().map(e -> { if (e % 2 == 0) { return Arrays.asList(e, e); } else { return e; } }).collect(Collectors.toList()); List res2 = nums.stream().flatMap(e -> { if (e % 2 == 0) { return Stream.of(e, e); } else { return Stream.of(e); } }).collect(Collectors.toList()); System.out.println(res1); System.out.println(res2); } }

执行结果:

文章太有用啦👍,打赏个钢镚鼓励鼓励!!

相关文章 使用docker极速创建zookeeper环境 什么是线程安全和线程不安全 正则表达式在线工具列表 使用java8的stream流实现对list集合的拷贝 java中&&和&以及||和|的区别


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3