java stream map和 flatmap区别
区别:
map mapper返回R,flatMap mapper返回Stream<R>
官网解释
1,<R>Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
2,<R>Stream<R> map(Function<? super T,? extends R> mapper)
map(Function f)
接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素,返回的数据还是一个流。
flatMap(Function f)
接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流。
示例代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MapFlatMap {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("A");
list1.add("B");
List<String> list2 = new ArrayList<>();
list2.add("C");
list2.add("D");
List<List<String>> list = new ArrayList<>();
list.add(list1);
list.add(list2);
System.out.println("----------对比举例------------");
Stream stream1 = list.stream().map(i-> {
List<String> listT = new ArrayList<>();
i.stream().forEach(j->listT.add("map1>" + j));
return listT;
});
stream1.forEach(System.out::println);
System.out.println();
Stream stream2 = list.stream().flatMap(i->i.stream().map(j->"flatMap2>" + j));
stream2.forEach(System.out::println);
System.out.println("-----------单词合并-----------");
List<String> words = Arrays.asList("hello c++", "hello java", "hello python");
List<String> result = words.stream()
.map(word -> word.split(" ")) // 将单词按照空格切合,返回Stream<String[]>类型的数据
.flatMap(Arrays::stream) // 将Stream<String[]>转换为Stream<String>
.distinct() // 去重
.collect(Collectors.toList());
System.out.println(result);
}
}
输出:
----------对比举例------------
[map1>A, map1>B]
[map1>C, map1>D]
flatMap2>A
flatMap2>B
flatMap2>C
flatMap2>D
-----------单词合并-----------
[hello, c++, java, python]
java stream map和 flatmap区别的更多相关文章
- java8中stream的map和flatmap的理解
转自https://blog.csdn.net/wynjauu/article/details/78741093 假如我们有这样一个需求给定单词列表["Hello","W ...
- map和flatmap的区别+理解、学习与使用 Java 中的 Optional
转自:map和flatmap的区别 对于stream, 两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为n ...
- java8Stream map和flatmap的区别
map和flatmap的区别 map只是一维 1对1 的映射 而flatmap可以将一个2维的集合映射成一个一维,相当于他映射的深度比map深了一层 , 所以名称上就把map加了个flat 叫flat ...
- Stream之filter、distinct、skip、map、flatMap、match、find、reduce
一.Stream之filter.distinct.skip: package com.cy.java8; import java.util.Arrays; import java.util.List; ...
- Java中Set Map List 的区别
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...
- spark中map与flatMap的区别
作为spark初学者对,一直对map与flatMap两个函数比较难以理解,这几天看了和写了不少例子,终于把它们搞清楚了 两者的区别主要在于action后得到的值 例子: import org.apac ...
- Optional和Stream的map与flatMap
Optional的map和flatMap Optional存在map和flatMap方法.map源码如下 public<U> Optional<U> map(Function& ...
- Java Stream 使用详解
Stream是 Java 8新增加的类,用来补充集合类. Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的. Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的 ...
- [源码解析] 当 Java Stream 遇见 Flink
[源码解析] 当 Java Stream 遇见 Flink 目录 [源码解析] 当 Java Stream 遇见 Flink 0x00 摘要 0x01 领域 1.1 Flink 1.2 Java St ...
- 基础篇:JAVA.Stream函数,优雅的数据流操作
前言 平时操作集合数据,我们一般都是for或者iterator去遍历,不是很好看.java提供了Stream的概念,它可以让我们把集合数据当做一个个元素在处理,并且提供多线程模式 流的创建 流的各种数 ...
随机推荐
- 错误:[ERROR] 不再支持源选项 5。请使用 6 或更高版本。 [ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。
解决方案 pom.xml文件中增加maven编译的java.version jdk版本设置,以及maven.compiler.source 资源编译jdk版本设置和maven.compiler.tar ...
- java-javaSE-异常机制
java中的异常结构 java 中的所有异常都来自于顶级父类 Throwable,Throwable 有两个子类 Exception 和 Error Error 是 Java 虚拟机无法解决的严重问题 ...
- Ubuntu截图软件
Ubuntu截图软件 方法一:使用系统自带的快捷键 可以将其修改为自己习惯的快捷键 如图: 方式二:使用软件ksnip GitHub: https://github.com/ksnip/ksnip 安 ...
- requests库获取指定关键词的图片,并保存到本地
var code = "45f4267f-9476-44ca-ac68-6d32aad2d4e1" 源码地址:https://gitee.com/myrensheng/data_a ...
- C++和C中的输入输出总结、标准输入/标准输出/标准错误与重定向,>>、>、<、<<
标准输入/标准输出/标准错误与重定向 0表示标准输入.1表示标准输出.2标准错误.1和2都是默认是输出到屏幕. linux中的>>.>.<.<<:这些符号是Linu ...
- uniapp引入微信小程序自定义视频组件--记录
官方文档:https://zh.uniapp.dcloud.io/tutorial/miniprogram-subject.html 在 pages.json同级目录下 创建目录和文件: wxcomp ...
- (1028) 权限,chmod、chgrp、chown详解
https://www.cnblogs.com/Berryxiong/p/6193866.html 例1: $ chgrp - R book /opt/local /book 改变/opt/local ...
- day11 事件相关笔记
day11 事件上 事件的概述 事件是指代一个东西的操作被另外一个东西监听以后的一个过程(事件),这个过程可以完成对应的操作(处理函数)事件监听器是一个标准的观察者模式(observer)也被称为订阅 ...
- 【Word】通配符和特殊字符
[Word]通配符和特殊字符 ^p 换行符 正则表达式 使用\转义,用于[]等 参考资料 Word通配符怎么用?使用Word通配符的方法
- python快速制作可视化报表