使用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()示例相关推荐

  1. Java Stream map flatMap mapMulti的升维和降维

    //升维List<Integer> list = List.of(4, 5, 6);System.out.println("第1个");//mapMulti产生额外的一 ...

  2. pyspark实践之 map/flatMap应用示例

    1.map用法示例 PySpark map() Transformation - Spark By {Examples} 1.1 比较map和foreach的功能异同 PySpark foreach( ...

  3. Java将map置空_Java实现过滤掉map集合中key或value为空的值示例

    Java实现过滤掉map集合中key或value为空的值示例 发布时间:2020-09-16 23:26:14 来源:脚本之家 阅读:147 作者:May的博客 本文实例讲述了Java实现过滤掉map ...

  4. 【Java 8 新特性】Java Map getOrDefault() 示例 | Map获取值为空则取默认值

    @[TOC](Java Map getOrDefault() 示例 | Map获取值为空则取默认值) getOrDefault是java.util.Map的默认方法,在Java 8中被引入. getO ...

  5. java containskey_Java Map containsKey()用法及代码示例

    java.util.Map.containsKey()方法用于检查特定键是否已映射到Map中.它使用key元素作为参数,如果该元素在映射中映射,则返回True. 用法: boolean contain ...

  6. Java 9 特性与示例

    Java 9 特性与示例 Java 9是一个主要版本,它为开发人员带来了许多功能.在本文中,我们将详细介绍Java 9的功能. Java 10已发布,有关Java 10发行版的完整概述,请参阅Java ...

  7. Swfit Array 遍历 map flatMap filter reduce

    官网文档:Apple Developer Documentation 常用属性和方法可查看官网文档. 一.遍历 这里主要记录下遍历方法. 使用for in 遍历 for item in arr {pr ...

  8. java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...

    Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...

  9. MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三

    前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...

  10. JAXB和java.util.Map

    具有讽刺意味的是,可能很难在JAXB(JSR-222)中映射java.util.Map类? 在这篇文章中,我将介绍一些使其变得更容易的项目. Java模型 以下是我们将用于此示例的Java模型. 顾客 ...

最新文章

  1. 黑马lavarel教程---3、数据库和视图注意点
  2. java 处理表单_java – 处理multipart / form-data输入
  3. Vue 自定义指令的注册方式和选项参数
  4. 宇宙是否可以了解,宇宙和计算机科学有关系吗?
  5. matlab 机械振动,MATLAB使用教程之用MATLAB仿真机械振动.doc
  6. 猜姓氏c语言题目,猜姓氏的谜语及答案
  7. 西方哲学包括计算机科学吗,哲学类专业包括哪些专业
  8. COT为平台各项功能,进行TOKEN化赋能
  9. 拜腾“难”飞:全球化饮鸩止渴?
  10. 2021年美容师(初级)报名考试及美容师(初级)最新解析
  11. 2021-09-29破解小米“铁蛋”,只需9999元,你也可以做一个四足机器人!
  12. 软考 软件设计师 第五版+历年真题
  13. 领导者必备的13个管理套路,用好了,下属死心塌地为你卖命
  14. UEditor富文本编辑器不显示问题
  15. flink run常用参数说明
  16. 力扣 leetcode 1046. 最后一块石头的重量 (python)
  17. 2021年中国3D+CAM软件市场趋势报告、技术动态创新及2027年市场预测
  18. 计算机系统软件最核心最重要,计算机软件系统最重要的是(),它是计算机能正常工作的核心。 - 问答库...
  19. sublime text3配置python的代码提示
  20. Cscope使用方法小结

热门文章

  1. hihocoder1147 时空阵(bfs树+DP)
  2. [系统安全]使用OD编写连连看外挂
  3. (一)Web Service——基本概念
  4. laravel关闭crsf
  5. java中你知道这四种代码块吗?
  6. 斐波那契查找+思路分析
  7. PHP WEB程序设计信息表,PHP WEB程序设计
  8. 在html页面中怎么打印区域,在HTML中指定打印区域进行打印机打印
  9. 区间数多属性决策matlab,区间数多属性决策的改进理想解法
  10. 转: 理解RESTful架构