Stream中flatMap与Map的区别(详细例子和详细解释)

主要的区别

flatMap与Map俩个方法都是对Stream中的单个元素进行替换,但是flatMap是把单个元素换成的所有元素进行串起来,最后每一个单个元素里面的单个元素都是单个元素,就比如一个String字符串类型在flatMap方法中进行toArray()变换成了数组char[]类型,flatMap方法会将所有数组里面的元素全部提取出来,最后将他们串起来,并且flatMap方法最后的返回值一定要是Stream类型,所以最后需要用Stream.of()将你的转换后的参数包裹起来变成Stream类型。

而在Map方法中String类型参数运用toArray()方法变成了数组char[]类型,最后串起来的单个元素还是每个char[]类型了,并不会进行再细分,并且Map方法不像flatMap方法最后规定了需要返回固定类型值,你可以随意返回你想返回的类型值。
如果还是不懂可以看代码例子。(●’◡’●)
例如:

List<String> list = new ArrayList<>();

list.add("Holle world and you world");
//flatMap方法
list.stream().flatMap(t -> Stream.of(t.split("\\s+"))).
			filter(t -> word.equalsIgnoreCase(t)).forEach(System.out::println);
//结果为:Holle
//		  world
//		  and
//		  you
//		  world
//Map方法
list.stream().Map(t -> Stream.of(t.split("\\s+"))).
			filter(t -> word.equalsIgnoreCase(t)).forEach(System.out::println);
//而Map方法最后的结果为一个地址,并没有对数组里面的结果进行细分最后的结果依旧为一个整体

总结

如果是没有需要再进行细分的情况可以直接运用Map方法,里面的返回类型自己定义,非常具有灵活性
如果是需要进行再细分,运用flatMap方法能够很好的给你便利

最后希望看完哦,非常有帮助

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值