java stream 查找,java 集合 stream
00-1010 I .对比一下有多简单。二。其他匹配规则函数介绍。三。元素查找和可选
当我们对数组或集合类进行操作时,我们经常会遇到这样的需求,比如:
是否包含某个匹配规则的元素?所有元素都符合某个匹配规则吗?是不是所有元素都不符合某个匹配规则?找到符合匹配规则的第一个元素,找到任何符合匹配规则的元素。如果把这些要求写在for循环里,还是比较麻烦的,需要使用for循环和break!本节介绍如何使用Stream API实现“查找匹配”。
目录
employees是10个employee对象的列表。我们在前面的章节中已经多次使用过,所以这里不列出代码。
如果不使用Stream API实现,是否可以发现员工列表中是否包含70岁以上的员工?代码如下:
boolean isExistAgeThan70=falsefor(Employee Employee : employees){ if(Employee . getage()70){ isexistagethan 70=true;打破;}}如果我们用Stream API,就是下面这一行代码,用的是我们之前学过的‘谓词逻辑’。
boolean isexistagethan 70=employees . stream()。any match(employee . agegreaterthan 70);还可以使用以下代码将谓词逻辑更改为lambda表达式:
boolean isexistagethan 72=employees . stream()。any match(e-e . getage()72);因此,我们引入第一个匹配规则函数:anyMatch,它决定流中是否包含某个“匹配规则”的元素。这个匹配规则可以是lambda表达式或谓词。
00-1010都是10岁以上的员工吗?AllMatch rule函数:判断流中的所有元素都满足某个‘匹配规则’。
boolean isexistagethan 10=employees . stream()。all match(e-e . getage()10);没有18岁以下的员工吗?NoneMatch rule function of none:确定流中的所有元素是否都不满足某个“匹配规则”。
boolean isexistageless 18=employees . stream()。none match(e-e . getage()18);
00-1010从列表中按顺序查找第一个40岁以上的员工。
optional employee employee optional=employees . stream()。过滤器(e - e.getAge() 40)。findFirst();system . out . println(employee optional . get());打印结果
雇员(id=3,年龄=43,性别=M,名字=Ricky,姓氏=Martin)
可选类表示值的存在或不存在。java8中引入的,这样就不用返回null了。
如果Optional包含值,IsPresent()将返回true,否则将返回false。
当值存在时,IfPresent(消费者块)将执行给定的代码块。在第三章中,我们介绍了消费者功能接口;它允许您传递一个Lambda表达式,该表达式接收一个T类型参数并返回void。
当值存在时Get()将返回值,否则?存在NoSuchElement异常。
否则(thother)将在值存在时返回值,否则将返回默认值。
请看关于Optinal各种功能的视频!哔哩哔哩观看地址
FindFirst用于查找满足匹配规则的第一个元素,返回值可选。
Finy用于查找任何符合“匹配规则”的元素,返回值是可选的。
以上是流元素匹配和搜索的细节,是java理论的基础。更多关于java流元素匹配和搜索的信息,请关注大众IT的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。