Stream:findFirst()高效简洁遍历集合中的一个元素

2023-11-02

业务开发中会运用到很多的List<T>集合数据类型,存放我们需要的业务数据,比如说有个产品产量信息表T,业务需要用柱状图展示每个产品每个月的产量图示,那我们定义了一个实体类ProductVO来传递这些数据,包含了月份month,总数count,产品pro,通过dao.xml中对产量信息表进行SQL编程,将产量数按月份和产品分组求和,最终返回在一个List<ProductVo>中。在service层进行调用得到这个list集合,一般我们都是通过for循环或者迭代器进行遍历,做判断,现在java8新特性Stream能帮我们简洁且高效的编码完成该循环。不需要再写冗杂沉重的循环了

 代码如下:

//调用dao层方法,得到将产量分组好的集合数据
List<ProductVO > list= productDao.getProduct();

//通过stream流 将月份等于5的元素取出来,findFirst取第一个元素
ProductVO vo = list.stream().filter(f->Integer.parseInt(f.getMonth())=5).findFirst().get();

 StreamfindFirst方法在此流中查找第一个元素作为Optional。 get方法则返回处理的元素。

如果findFirst选择的元素为null,它将抛出NullPointerException

 可能会遇到的问题:

NoSuchElementException:空指针的话可以用这个方法进行过滤 orElse方法:

将.get()替换为.orElse(null),这样就会返回null值了。不会再报错

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Stream:findFirst()高效简洁遍历集合中的一个元素 的相关文章

随机推荐

  • oracle默认用户名、密码

    一般来说 安装ORACLE时 若没有为下列用户重设密码 则其默认密码如下 用户名 密码 登录身份 说明 sys change on install SYSDBA 或 SYSOPER 不能以 NORMAL 登录 可作为默认的系统管理员 sys
  • pytorch迁移学习载入部分权重

    载入权重是迁移学习的重要部分 这个权重的来源可以是官方发布的预训练权重 也可以是你自己训练的权重并载入模型进行继续学习 使用官方预训练权重 这样的权重包含的信息量大且全面 可以适配一些小数据的任务 即小数据在使用迁移学习后仍然能够保持良好的
  • IE被www.537.com,www.COXDX.INFO劫持,修复~

    一位同事的电脑中IE一直使用265网址导航作首页 这天忽然变成hxxp www COXDX INFO z012了 修改不回来 请我帮忙检修 打开Internet选项 手动修改首页为http www 265 com 但总不能生效 将该电脑中的
  • Qt5学习笔记:Qt两个窗口(Widget)间传递数据

    0x01 原理介绍 Qt两个窗口之间传递数据实际上还是利用了信号与槽的概念来实现 本质上讲 我们只需要实现A窗口发射信号 B窗口槽函数响应信号即可 首先我们在A窗口的头文件中定义发射的信号 signals void sendSignal Q
  • 如何进行网站性能优化?

    分享人 chenxingxing 目录 1 背景介绍 2 知识剖析 3 常见问题 4 解决方案 5 编码实战 6 扩展思考 7 参考文献 8 更多讨论 一 背景介绍 前端优化的目的 1 用户 体验好 2 服务商 节省资源 简而言之 就是在不
  • mq的概念

    1 延迟队列 概念 延迟队列存储的是对应的延迟消息 所谓 延迟消息 是指当消息被发送以后 并不想让消费者立刻拿到消息 而是等待特定时间后 消费者才能拿到这个消息进行消费 应用场景 当你在网上购物的时候是否会遇到这样的提示 十分钟之内未付款
  • SDC时序约束 - create_clock

    在写 sdc约束文件时 要做的第一件事情就是使用create clock对进入FPGA的时钟进行约束 其语法格式如下 create clock add name
  • Ranger配置HDFS报错:curl: (3) [globbing] nested braces not supported at pos 2

    Ambari上显示错误信息 2017 11 06 13 01 00 618 Will retry 65 time s caught exception u Execution of curl location trusted k negot
  • 【Matlab】提取excel中的数据画折线图

    1 前言 在日常数据分析时 将数据保存为xlsx的格式进行存储 本文利用xlsread函数对excel数据进行提取 并利用其数据进行二维图像的绘制 2 excel中数据内容 3 代码 1代表sheet1 pwd xlsread C User
  • 第二周-目录命名规则及用途,文件的元数据,软连接和硬连接

    1 描述Linux发行版的系统目录名称命名规则以及用途 命名规则 文件和目录被组织成一个单根倒置树结构 文件系统从根目录下开始 用 表示 文件名称区分大小写 文件系统分层结构 LSB Linux Standard Base 标准Linux文
  • 初识vue3

    对vue3的理解 2020年9月发布的正式版 vue3支持大多数的Vue2的特性 Vue中设计了一套强大的组合APi代替了Vue2中的option API 复用性更强了 更好的支持TS 最主要 Vue3中使用了Proxy配合Reflect代
  • notepad++中配置python IDE

    操作系统是windows7 notepad 版本是5 9 6 2的安装版 python版本是2 7 2 windows7下的python安装配置在http blog csdn net gabriel1026 article details
  • 《算法和数据结构》数学基础总结

    前言 算法是什么 数学是什么 算法中的数学又是什么 这篇文章 让我来为大家介绍下法中的数学基础 数学可以说是算法的基石 所谓万丈高楼平地起 如若根基不稳 那么再高的楼 也只是豆腐渣工程 随时都有塌陷的可能 所以数学之于算法 可谓 非常重要
  • vmware 虚拟机开机自启动脚本

    1 建立一个txt文件 D VMware VMware Workstation vmrun exe T ws start I Documents Virtual Machines centos centos vmx nogui 注意 如果路
  • Python学习之爬取网页图片(单张)

    import requests import os os 库是Python标准库 包含几百个函数 常用的有路径操作 进程管理 环境参数等 root D pictures url input 请输入图片链接 让用户输入图片链接 path ro
  • 【JVM】JVM内存模型(详细)

    目录 一 JVM概述 1 jvm简介 2 jvm作用 3 jvm的内存模型 二 类加载器 1 类加载器的作用 2 加载器的类型 3 双亲委派机制的运行过程 4 双亲委派机制优缺点 5 为什么要破坏双亲委派机制 6 破坏双亲委派机制的方式 三
  • 函数调用堆栈的过程

    函数在进行调用时会产生开栈和清栈的操作 那么就来介绍一下函数调用堆栈的过程吧 首先 利用一个小例子来研究这个过程 include
  • Android禁止view上下滑动,Android RecyclerView禁止滑动

    在开发时 数组返回数目很少 需求要求不能左右滑动 下面是一种解决方案 1 RecyclerView 为垂直状态 VERTICAL 下 LinearLayoutManager layoutManager new LinearLayoutMan
  • 1929:【04NOIP普及组】火星人

    题干 这道题有好多废话 不过和全排列非常像 全排列题目 所以这道题数字的大小顺序与全排列的默认顺序一模一样 全排列的代码 在这里 本题就是一次次地调用全排列 不愿意麻烦的 就是我 可以用STL 非常方便 代码 100分 include
  • Stream:findFirst()高效简洁遍历集合中的一个元素

    业务开发中会运用到很多的List