iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java8实现Stream流的合并的方法展示
  • 725
分享到

Java8实现Stream流的合并的方法展示

Java8的Stream流详解java8 Stream流操作Java8 Stream 2023-05-19 06:05:38 725人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录Stream.concatflatMap最近的需求里有这样一个场景,要校验一个集合中每个对象的多个Id的有效性。比如一个Customer对象,有3个Id:id1,id2,id3,

最近的需求里有这样一个场景,要校验一个集合中每个对象的多个Id的有效性。比如一个Customer对象,有3个Id:id1id2id3,要把这些Id全部取出来,然后去数据库里查询它是否存在。

@Data
@AllArgsConstructor
public class Customer {
    private String name;
    private String id1;
    private String id2;
    private String id3;
}

在通常情况下,我们要从集合中取出一个对象属性,很好办,用这个办法:

customerList.stream().map(Customer::getId1).filter(Objects::nonNull).collect(Collectors.toList())

现在要取3个字段,怎么做呢?

Stream.concat

Stream接口中的静态方法concat,可以把两个流合成一个,我们取3个字段可以合并两次:

Stream<String> concat = Stream.concat(customerList.stream().map(Customer::getId1),
		customerList.stream().map(Customer::getId2));
List<String> ids = Stream.concat(concat, customerList.stream().map(Customer::getId3))
        .filter(Objects::nonNull)
        .collect(Collectors.toList());

取4个字段,就再继续合并。但是这种不够简洁,可以使用扁平化流flatMap。

flatMap

flatmap方法让你把一个流中的每个值都换成另一个流,然后把所有的流连接起来成为一个流。

Stream.flatMap方法的入参为一个Function函数,函数返回值的泛型要求为Stream类型。对比一下,mapflatMap都是将流中的元素映射为我们想要的值,只是flatMap映射的结果是一个新的Stream。

Stream.of方法刚好可以构建一个类型为Stream的原始流,以供flatMap操作。

List<String> ids = Stream.of(customerList.stream().map(Customer::getId1),
                             customerList.stream().map(Customer::getId2),
                             customerList.stream().map(Customer::getId3))
        .flatMap(idStream -> idStream)
        .filter(Objects::nonNull)
        .collect(Collectors.toList());

注意,Stream.of方法返回的流的泛型跟方法入参的类型是一样,上面的代码就相当于,Stream.of(stream, stream, stream), 得到的结果就是Stream<Stream>,紧接着用flatMap扁平化处理,把每一个元素合成一个新流。

Java8中的Stream流提供了多种合并方法,可以方便地将多个Stream流合并成一个。其中,concat()方法适用于两个Stream流的合并,flatMap()方法适用于将一个Stream流中的元素映射成多个Stream流并合并成一个,reduce()方法适用于将Stream流中的元素逐个合并成一个结果。在实际开发中,可以根据具体需求选择不同的合并方法,提高代码的可读性和效率。

到此这篇关于Java8实现Stream流的合并的方法展示的文章就介绍到这了,更多相关Java8 Stream流的合并内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java8实现Stream流的合并的方法展示

本文链接: https://www.lsjlt.com/news/212567.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java8实现Stream流的合并的方法展示
    目录Stream.concatflatMap最近的需求里有这样一个场景,要校验一个集合中每个对象的多个Id的有效性。比如一个Customer对象,有3个Id:id1,id2,id3,...
    99+
    2023-05-19
    Java8的Stream流详解 java8 Stream流操作 Java8 Stream
  • Java8 Stream 流常用方法合集
    目录一、概述二、分类三、具体用法1. 流的常用创建方法2. 流的中间操作3. 流的终止操作一、概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行...
    99+
    2024-04-02
  • 使用Java8 Stream流的skip + limit实现批处理的方法
    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同...
    99+
    2024-04-02
  • JAVA8 Stream流中的reduce()方法详解
    目录reduce()简介reduce三个override的方法公共集合reduce()简介 Reduce 原意:减少,缩小根据指定的计算模型将Stream中的值计算得到一个...
    99+
    2023-02-28
    JAVA8 Stream reduce()方法 JAVA8 Stream reduce
  • Java8 Stream流的常用方法汇总
    目录1、快速创建List(1)、new一个list,一个一个添加(2)、Stream流:创建动态list,可以添加元素(3)、如果创建一个固定长度的list,可以使用Arrays.a...
    99+
    2024-04-02
  • Java8 Stream流的常用方法有哪些
    这篇文章主要介绍“Java8 Stream流的常用方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java8 Stream流的常用方法有哪些”文章能帮助大家解决问题。1、...
    99+
    2023-07-02
  • JAVA8 Stream流中的reduce()方法怎么使用
    这篇文章主要介绍“JAVA8 Stream流中的reduce()方法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JAVA8 Stream流中的reduce()方法怎么使...
    99+
    2023-07-05
  • Java8中Stream流求最大值最小值的实现示例
    目录一、BigDecimal 求最大值和最小值二、Integer 求最大值和最小值三、Long 求最大值和最小值四、Double 求最大值和最小值一、BigDecimal 求最大值和...
    99+
    2023-05-17
    Java8 最大值 Java8 最小值
  • Java8中的Stream 流实践操作
    目录1 前言2 Stream 的分类3 Stream 的操作3.1 创建流的方式3.2 流的中间操作3.3 流的终止操作总结1 前言 Stream 是 java8 中处理集合的抽象概...
    99+
    2024-04-02
  • Java8新特性Stream流的示例分析
    这篇文章主要介绍Java8新特性Stream流的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是Stream流?Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。Stream的优点...
    99+
    2023-05-30
    java8 stream流
  • Java8利用Stream实现列表去重的方法详解
    目录一. Stream 的distinct()方法1.1 对于 String 列表的去重1.2 对于实体类列表的去重二. 根据 List<Object> 中 Object...
    99+
    2024-04-02
  • java8中Stream list to Map key重复value合并到Collectio的示例分析
    这篇文章给大家分享的是有关java8中Stream list to Map key重复value合并到Collectio的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。java8 Stream list ...
    99+
    2023-06-15
  • java8 stream多字段排序的实现
    很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理 使用java8新特性,下面先来点基础的 List<类> list; ...
    99+
    2024-04-02
  • Java8 Stream流多字段求和、汇聚的实例
    目录Stream流多字段求和、汇聚实现方法对象类型数据处理Map类型数据处理Stream分组求和使用笔记分组求和使用Stream流多字段求和、汇聚 实现方法 利用 Collector...
    99+
    2024-04-02
  • java8 Stream list to Map key 重复 value合并到Collectio的操作
    java8 Stream list to Map key 重复 value合并到Collectio 关于把list转换成key value的map有很多博客上都有实现,这里是一个把v...
    99+
    2024-04-02
  • Stream流中的Map方法
    在Java 8及以上的版本中,Stream中的map方法可以用于对Stream中的每个元素应用一个函数,并将结果存储在一个新的Stream中。具体用法如下: // 创建一个Stream对象Stream stream = ...;// 应用函...
    99+
    2023-08-31
    java 开发语言
  • Java8中Stream的常用方法有哪些
    本文小编为大家详细介绍“Java8中Stream的常用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java8中Stream的常用方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 简...
    99+
    2023-06-16
  • Java8中Stream的详细使用方法大全
    目录一、概述1、使用流的好处2、流是什么二、分类三、Stream的创建1、通过 java.util.Collection.stream() 方法用集合创建流2、使用 java.uti...
    99+
    2024-04-02
  • java8 stream的多字段排序实现(踩坑)
    关于java8 的stream排序用法这里不做多说,这里介绍下曾经在多字段排序时遇到过的一个坑。 需求:需要根据id去分组,然后取出每组中行号最大的一个对象值。 想到可以利用stre...
    99+
    2024-04-02
  • Stream流的常用方法大全
    目录 前言 1. forEach遍历 2. filter过滤 3. distinct去重 4. limit截取 5. skip跳过 6.排序sorted 7.最值max,min 8. 统计reduce 9. List结构转换Map结构 10...
    99+
    2023-09-21
    java 开发语言 spring boot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作