Java8 Stream(9)List集合查找 findFirst、findAny、anyMatch、allMatch、noneMatch

Stream:findFirst()高效简洁遍历集合中的一个元素 业务开发中会运用到很多的List集合数据类型,存放我们需要的业务数据,比如说有个产品产量信息表T,业务需要用柱状图展示每个产品每个月的产量图示,那我们定义了一个实体类ProductVO来传递这些数据,包含了月份month,总数count,产品pro,通过dao.xml中对产量信息表进行SQL编程,将产量数按月份和产品分组求和,最终返回在一个List中。get方法则返回处理的元素。方法在此流中查找第一个元素作为。 阅读详情
AI摘要

本文详细介绍了Java集合框架中用于查找和匹配的方法,包括findFirst、findAny、anyMatch、allMatch和noneMatch。通过实例展示了如何在集合中查找符合条件的元素以及判断集合数据是否满足特定条件。在选择findFirst和findAny时,前者适用于有序集合并返回第一个匹配项,后者则在并行流中限制较少,返回任一匹配项。匹配方法anyMatch、allMatch和noneMatch分别用于检查集合中是否存在至少一个、全部或没有匹配项的情况。

在开发中,经常要判断集合中是否有指定的值,对于在集合中查询匹配数据,可以用到findFirst、findAny、anyMatch、allMatch和noneMatch这些方法。

先造点数据

pigs.add(new Pig(1, "猪爸爸", 31, "M", false));
pigs.add(new Pig(2, "猪妈妈", 28, "F", true));
pigs.add(new Pig(3, "乔治", 2, "M", false));
pigs.add(new Pig(4, "佩奇", 5, "F", false));

一、查找

1. findFirst

如果一个集合数据是有序的,而且你要查找符合条件的第一条数据。

这时用findFirst是比较合适的。

Optional<Pig> pigOptional = pigs.stream()
        .filter(a -> a.getAge() > 5)
        .findFirst();

if (pigOptional.isPresent()){
    System.out.println(pigOptional.get().getName());
}

2. findAny

将返回集合中符合条件的任意一个元素。

Optional<Pig> anyPig = pigs.stream()
        .filter(a -> a.getAge() < 30)
        .findAny();

if (anyPig.isPresent()){
    System.out.println(anyPig.get().getName());
}

3. findFirst和findAny如何选择?

  • 如果你不关心返回的是哪一个数据,只要符合条件的就行,那就用findAny。
    而且在并行流上,findAny限制更少。

  • 如果你关心集合的顺序,要返回符合条件的第一个元素,那就用findFirst。

二、匹配

match是匹配的意思,返回结果是bool类型,要么匹配,要么就不匹配。

1. anyMatch

是否有1条age>50的数据?

Boolean anyOldThan50 = pigs.stream()
        .anyMatch(a -> a.getAge() > 50);

2. allMatch

是否所有数据都满足age<50
注意:如果集合为空,也就是流为空,allMatch还是会返回true

Boolean allLittleThan50 = pigs.stream()
        .allMatch(a -> a.getAge() < 50);

3. noneMatch

是否所有数据都不满足age<50

Boolean noneLittleThan50 = pigs.stream()
        .noneMatch(a -> a.getAge() < 50);
java8利用Stream方法求两个List对象的交集、差集与并集(即:anyMatch和allMatch和noneMatch的区别详解) 这里anyMatch表示,判断的条件里,任意一个元素符合条件,就返回true值。在allMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 Predicate 是接收一个T类型参数,然后经过逻辑验证返回布尔值结果。判断数据列表中全部元素都不符合设置的predicate条件,如果是就返回true,否则返回false,流为空时总是返回true。判断数据列表中全部元素都符合设置的predicate条件,如果是就返回true,否则返回false,流为空时总是返回true。 阅读详情

相关推荐

Java中anyMatch()、allMatch()、noneMatch()用法详解

2、allMatch() 如果取反,等效于 noneMatch() 所有元素不等于指定元素返回 true。2、noneMatch() 如果取反,等效于 allMatch() 所有元素等于指定元素返回 true。2、单元素取反,因为是单元素只有a,没有不等于 a 的元素,所以不成立返回 false。anyMatch():匹配到任何一个元素和指定的元素相等,返回 true。allMatch():匹配到全部元素和指定的元素相等,返回 true。输出:anyMatch()测试取反多元素结果:true。

hkl_Forever的博客 4万+

【Java 8 新特性】Java Stream通过findFirst()查找满足条件的一条数据

Stream的findFirst方法在此流中查找第一个元素作为Optional。 如果流中没有元素,findFirst返回空的Optional。 如果流没有顺序,那么findFirst可以选择任何元素。 如果findFirst选择的元素为null,它将抛出NullPointerException。 在javadoc中的findFirst声明 Optional<T> findFirst() 返回:findFirst方法返回Optional包含流中第一个元素的元素。 异常:如果选择null值,f

猫巳的博客 9万+

Java || 你还在遍历搜索集合?别逗了,Java 8 一行代码解决,是真的优雅

背景 是的,如果你想搜索 List 集合,在 Java 8 之前可以使用自身的 contains/ indexOf 方法来查找元素,但仅限是完整元素,而不能模糊搜索或者自定义搜索,这时候确实只能遍历。 但现在都 2021 年了,你还在使用传统的遍历集合的方式搜索 List 集合元素吗? 那你就太 out 了,使用 Java 8 中的 Stream 搜索元素,一行代码即可搞定,而且还真的很优雅!这篇不会介绍 Stream 基础,Stream 系列我之前写过一个专题了,不懂的关注公众号Java技术栈.

【优快云】 2542

Java Stream通过findFirst()查找满足条件的一条数据

【Java 8 新特性】Java Stream通过findFirst()查找满足条件的一条数据

19.2.04.157N的博客 8977

电流采样电路设计:差分放大与ADC采集详解

在电机控制、电源管理、电池监测等应用中,电流采样是一个关键环节。通常,我们使用小阻值的采样电阻将电流信号转换为电压信号,再通过运放放大后送入ADC进行采集。本文将详细分析一种基于差分放大器的电流采样电路,包括信号放大、参考电压偏置、滤波保护以及ADC转换计算等内容。

W0s477的博客 2万+

智能环境感知:STM32多传感器数据融合与报警策略设计

本文详细介绍了基于STM32的多传感器数据融合系统设计,整合DHT11温湿度传感器、MQ-2烟雾检测和光照强度检测模块,通过智能算法实现环境感知与动态报警。系统采用数据滤波、多传感器校验和自适应阈值策略,显著提升监测精度与可靠性,并通过OLED显示屏提供清晰的多级报警界面。

plant的博客 201

Java8使用Stream流实现List列表的遍历、统计、排序等

Java8提供了Stream(流)处理集合的关键抽象概念,它可以对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。Stream API 借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。 下面是使用Stream的常用方法的综合实例: 创建User.class(用户信息表) import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; im...

博客 1万+

YOLOv13优化:PoolingFormerCGLU模块 MetaFormer 框架 + 池化混合器 手把手教你自注意力

PoolingFormer1 是一个基于 MetaFormer 框架 的轻量化卷积-Transformer 混合模块,通过 Pooling 取代自注意力,实现: 更低的计算成本 一定的全局信息融合 兼容 CNN 和 Transformer 的优点

FJN110的博客 425

Java8使用Stream流实现List列表简单使用

Java8提供了(流)处理集合的关键抽象概念,Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。它可以对集合进行操作,可以执行非常复杂的查找、过滤和映射数据等操作。Stream API 借助于同样新出现的Lambda表达式,极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。下面是Stream常用函数综合实例:创建User.class(用户信息表)使用forEach()遍历列表数据。

可小辉的博客 2847

包成功安装tiny-cuda-nn,记录安装过程中的问题解决,附带pytorch3d安装【踩坑指南】

该包可以显著提高NeRF训练速度,是和NeRFstudio等框架中,必须使用的。本文提供tiny-cuda-nn可以安装的完整包的下载链接,可以直接上传到项目中安装。附带笔者遇到的问题的解决方案。

zik的博客 7029

【自监督学习完整教程】第 1 章:初识自监督学习

摘要: 自监督学习(SSL)是一种利用无标签数据自动生成伪标签进行模型训练的方法,有效降低了人工标注成本。本文对比了监督学习、无监督学习和SSL的差异,重点阐述了SSL通过设计PretextTasks(如图像旋转预测)从数据中提取深层特征的原理。实践部分以PyTorch实现图像旋转预测任务为例,展示了SSL的训练流程。实验表明,SSL能够学习通用视觉特征,适用于计算机视觉、自然语言处理等领域,尤其在标注数据稀缺的场景中表现优异。

u012133341的博客 260

你还在遍历搜索集合?别逗了,Java 8 一行代码足矣,是真的优雅

背景 是的,如果你想搜索 List 集合,在 Java 8 之前可以使用自身的 contains/ indexOf 方法来查找元素,但仅限是完整元素,而不能模糊搜索或者自定义搜索,这时候确实只能遍历。 但现在都 2021 年了,你还在使用传统的遍历集合的方式搜索 List 集合元素吗? 那你就太 out 了,使用 Java 8 中的 Stream 搜索元素,一行代码即可搞定,而且还真的很优雅!这篇不会介绍 Stream 基础,Stream 系列我之前写过一个专题了,不懂的关注公众号Java技术栈,然后在公众

Java技术栈,分享最主流的Java技术 411

华为OD机试真题 新系统【优化充电桩调度算法】

华为OD机试 新系统真题【优化充电桩调度算法】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【优化充电桩调度算法】

qq_45776114的博客 753

java 8 Stream的常用用法

8. mapToInt转为int流。10. anyMatch匹配任一元素。12. findFirst返回第一个。9. allMatch匹配所有元素。11. noneMatch不匹配。13. count返回元素总个数。5. distinct去重。14. 最值max,min。1. forEach遍历。2. filter过滤。3. limit截取。

weixin_42847744的博客 1218

搞定ESD(二):ESD干扰机理分析

大家好,我是记得诚。上文介绍了ESD的基本知识,对ESD的测试标准进行了解析,包括静电发生器的介绍,实验布置要求,静电放电实验的实施及判定等内容。本文主要介绍ESD的干扰机理。

记得诚 4298

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 525

Java8 Stream实战:精准查询与条件匹配在List集合中的高效应用

本文深入探讨了Java8 Stream API在List集合中的高效查询与条件匹配应用,重点解析了findFirst和findAny方法的使用场景与性能差异。通过电商系统等实战案例,展示了如何利用Stream简化代码并提升开发效率,同时提供了并行流优化、短路操作利用等实用技巧,帮助开发者掌握Java8 Stream的高级用法。

weixin_30703911的博客 241

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

你还在遍历搜索集合?别逗了!Java 8 一行代码搞定,是真的优雅

以上所有搜索操作一行代码就能搞定,是不是很简单优雅?对于 List 之外的集合都可以转换为 List,再转换为 Stream 再进行搜索操作,对于 Stream,搜索简直就是小儿科,你学废用了吗?赶紧发给身边的同事看看吧,让你们的代码更优雅!

lt_xiaodou的博客 246

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

list stream 最大和最小值_Java笔记之Stream详解下篇

回顾往期内容经过上一篇内容的讲解,相信小伙伴们应该或多或少对流基础操作有了那么一丢丢的感觉了吧!当然,streamApi的重要操作其实最主要还是在对流结果的处理上,也就是我们非常关心的终止操作,因为只有经过这一道工序我们才能最终把想要的结果进行进一步收集整理,得到我们最终想要的。所以。接下来呢,让我们进入最重要的一个环节,也就是流的最后一步操作,流的终止操作。引言在正式进入前,问小伙伴们...

weixin_35084652的博客 2415

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java8流式解析json实例_Java8新特性Stream短路终端操作实例解析

这篇文章主要介绍了Java8新特性Stream短路终端操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下传入一个谓词,返回传为boolean,如果符合条件,则直接结束流。匹配所有 allMatch任意匹配 anymMatch不匹配 noneMatch查找首个 findFirst查找任意 findAny匹配所有 allMatch/匹配所有 ...

weixin_26735445的博客 536

Java8 Stream终端操作使用详解

前情回顾 前几篇讲了Java8中Stream流的简介,创建流的方式,以及Stream流中间操作的使用详解,想回顾的可以戳: Java8的流(stream)简介 Java 8创建Stream流的5种方法 Java8 Stream中间操作使用详解 话不多说,自己挖的坑自己要填完,今天就给大家讲完Java8中Stream的终端操作使用详解。Stream流的终端...

码之初的博客 747

Stream in Java 使用

stream 应用

endswell的专栏 1083

Java 8 中使用 Stream 方式处理数据

目录 一、什么是 Stream 二、Stream 操作分类 三、Stream 特性 四、数据转换为 Stream 五、Stream 转换得到指定类型数据 六、Stream 对于基本类型的封装 七、Stream 的串行与并行 1、Stream 的并行介绍 2、Stream 并行示例 八、Stream 中间操作(有状态)常用 API 1、distinct 2、sorted 3、skip 4、limit 九、Stream 中间操作(无状态)常用 API 1、map 2、pe.

mingyuli的博客 2514

Java jdk1.8新增的Stream流常用的方法

本文介绍了Java Stream流中常用的操作方法,主要针对List集合处理。内容涵盖:1)去重操作,包括基础去重和基于指定属性的去重;2)多种排序方式,如基础排序、属性排序、null值处理和多重排序;3)过滤、分页、分组等数据处理;4)集合转换,包括List与Map互转;5)字符串拼接;6)统计计算(最大值、最小值、求和等);7)条件判断(anyMatch/allMatch/noneMatch)和元素查找。这些方法通过链式调用实现高效的数据处理,适用于各种集合操作场景。

Java老兵的后端进阶与AI前沿探索之路。 2013

JAVA1.8--Stream终止(八)

/** * Stream的终止操作 * * 终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如List、Integer,甚至是void * * 查找与匹配 * * 方法 描述 * allMatch(Predicate p) 检查是否匹配所有元素 * anyMatch(Predicate p) ...

qq_20410965的博客 239

你还在遍历搜索集合?别逗了,Java 8 一行代码全部解决,是真的优雅

是的,如果你想搜索 List 集合,在 Java 8 之前可以使用自身的 contains/ indexOf 方法来查找元素,但仅限是完整元素,而不能模糊搜索或者自定义搜索,这时候确实只能遍历。 但现在都 2022年了,你还在使用传统的遍历集合的方式搜索 List 集合元素吗? 那你就太 out 了,使用 Java 8 中的 Stream 搜索元素,一行代码即可搞定,而且还真的很优雅!

Java_zhujia的博客 258
上一篇: Java8 Stream(8)List集合统计 求和 最大值 最小值 平均值
下一篇: Java8 Stream(10)Collectors groupingBy partitioningBy 案例详解
瑟王
博客等级 码龄17年 455粉丝 189原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑟王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值