Java 8 map(),flatMap()示例
使用map()方法
编程时,很常见的是处理数据以便从对象集合中收集一些信息。
假设我们要从特定公司的所有员工中查找城市。 我们的员工班级如下。
public class Employee {private String name;private Integer age;private String city;private String state; private Department department;public String getCity() {return city;}public void setCity(String city) {this.city = city;} public String getState() {return state;}public void setState(String state) {this.state = state;}
}
我没有包括Employee
类的所有属性,但是在这种情况下,我需要的是city
属性。
因此,现在,我们有了Employee对象的列表,需要找出不同的城市。 让我们看看Java 8之前的方法。希望,您将编写以下代码来获得不同的城市。
List<Employee> employeeList = .....
Set<String> cities = new HashSet<String>();
for (Employee emp : employeeList) {cities.add(emp.getCity());
}
Java 8 Stream接口引入了map()
方法,该方法以函数作为参数。 此函数应用于流中的每个元素并返回新流。 该代码将如下所示。
List<Employee> employeeList = new ArrayList<Employee>();
List<String> cities = employeeList.stream().map(Employee::getCity).distinct().collect(Collectors.toList());
使用flatMap()方法
Java 8 Stream接口引入了flatMap()
方法,该方法可用于将几个流合并或拼合为单个流。
让我们举个例子。 假设我们想过滤掉文本文件中的不同单词。 查看以下文本文件。
Sri Lanka is a beautiful country in Indian ocean.
It is totally surrounded by the sea.
在Java 8中,我们可以使用一行读取文本文件,它将返回字符串流。 流的每个元素将是文本文件的一行。
Stream<String> lineStream = Files.lines(Paths.get("data.txt"), Charset.defaultCharset());
如果通过打印'lineStream'Stream看到上述代码的输出,则将是文本文件的行。
接下来,我们可以将上述流的每个元素转换为单词流。 然后,我们可以使用flatMap()
方法将所有单词流扁平化为单个Stream。 如果我们对lineStream
Stream的每个元素执行以下代码,我们将获得两个单词流。 请参阅以下代码。
line -> Arrays.stream(line.split(" "))
两个单词流如下。
Stream 1 : [SriLanka][is][a][beautiful][country][in][Indian][ocean.]}
Stream 2 : [It][is][totally][surrounded][by][the][sea.]
flatMap()
方法可以将这两者平化为单个单词流,如下所示。
Stream<String> wordStream = lineStream.flatMap(line -> Arrays.stream(line.split(" ")));
如果打印上述wordStream
的元素,它将是文本文件中的所有单词。 但是,您仍然会看到重复的单词。 您可以使用distinct()
方法来避免重复。 这是最终代码。
List<String> wordStream = lineStream.flatMap(line -> Arrays.stream(line.split(" "))).distinct().collect(Collectors.toList());
如果仔细观察,您只需在Java 8中使用两行代码即可找到文本文件的不同单词。
翻译自: https://www.javacodegeeks.com/2018/07/java-8-map-flatmap-examples.html
Java 8 map(),flatMap()示例相关推荐
- Java Stream map flatMap mapMulti的升维和降维
//升维List<Integer> list = List.of(4, 5, 6);System.out.println("第1个");//mapMulti产生额外的一 ...
- pyspark实践之 map/flatMap应用示例
1.map用法示例 PySpark map() Transformation - Spark By {Examples} 1.1 比较map和foreach的功能异同 PySpark foreach( ...
- Java将map置空_Java实现过滤掉map集合中key或value为空的值示例
Java实现过滤掉map集合中key或value为空的值示例 发布时间:2020-09-16 23:26:14 来源:脚本之家 阅读:147 作者:May的博客 本文实例讲述了Java实现过滤掉map ...
- 【Java 8 新特性】Java Map getOrDefault() 示例 | Map获取值为空则取默认值
@[TOC](Java Map getOrDefault() 示例 | Map获取值为空则取默认值) getOrDefault是java.util.Map的默认方法,在Java 8中被引入. getO ...
- java containskey_Java Map containsKey()用法及代码示例
java.util.Map.containsKey()方法用于检查特定键是否已映射到Map中.它使用key元素作为参数,如果该元素在映射中映射,则返回True. 用法: boolean contain ...
- Java 9 特性与示例
Java 9 特性与示例 Java 9是一个主要版本,它为开发人员带来了许多功能.在本文中,我们将详细介绍Java 9的功能. Java 10已发布,有关Java 10发行版的完整概述,请参阅Java ...
- Swfit Array 遍历 map flatMap filter reduce
官网文档:Apple Developer Documentation 常用属性和方法可查看官网文档. 一.遍历 这里主要记录下遍历方法. 使用for in 遍历 for item in arr {pr ...
- java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...
Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...
- MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三
前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...
- JAXB和java.util.Map
具有讽刺意味的是,可能很难在JAXB(JSR-222)中映射java.util.Map类? 在这篇文章中,我将介绍一些使其变得更容易的项目. Java模型 以下是我们将用于此示例的Java模型. 顾客 ...
最新文章
- 黑马lavarel教程---3、数据库和视图注意点
- java 处理表单_java – 处理multipart / form-data输入
- Vue 自定义指令的注册方式和选项参数
- 宇宙是否可以了解,宇宙和计算机科学有关系吗?
- matlab 机械振动,MATLAB使用教程之用MATLAB仿真机械振动.doc
- 猜姓氏c语言题目,猜姓氏的谜语及答案
- 西方哲学包括计算机科学吗,哲学类专业包括哪些专业
- COT为平台各项功能,进行TOKEN化赋能
- 拜腾“难”飞:全球化饮鸩止渴?
- 2021年美容师(初级)报名考试及美容师(初级)最新解析
- 2021-09-29破解小米“铁蛋”,只需9999元,你也可以做一个四足机器人!
- 软考 软件设计师 第五版+历年真题
- 领导者必备的13个管理套路,用好了,下属死心塌地为你卖命
- UEditor富文本编辑器不显示问题
- flink run常用参数说明
- 力扣 leetcode 1046. 最后一块石头的重量 (python)
- 2021年中国3D+CAM软件市场趋势报告、技术动态创新及2027年市场预测
- 计算机系统软件最核心最重要,计算机软件系统最重要的是(),它是计算机能正常工作的核心。 - 问答库...
- sublime text3配置python的代码提示
- Cscope使用方法小结