查找满足断言的第一个元素
问题:查找满足断言的第一个元素
我刚刚开始使用Java 8的lambdas,我尝试去实现一些我在函数式语言里面经常用的
例如,大部分的函数式语言里有一些查找函数,针对序列或者list进行操作,返回使得断言为真的第一个元素。我唯一知道可以在Java8里面实现的就是:
lst.stream().filter(x -> x > 5).findFirst()
但是这对于我来说似乎效率不高,这个filter会扫描整个list,至少在我的理解上是这样的,这有可能是错误的,是不是有更好的方法。
回答一
return dataSource.getParkingLots().stream().filter(parkingLot -> Objects.equals(parkingLot.getId(), id)).findFirst().orElse(null);
我能filter出在对象列表里面唯一的那个对象,所以我经常用这个,希望可以帮到你吧
回答二
不是的,filter不用扫描整个stream的。它是一个中间操作,会返回一个lazy stream(事实上,所有的中间操作都会返回一个lazy stream)。为了说服你,你可以做一下下面的测试
List<Integer> list = Arrays.asList(1, 10, 3, 7, 5);
int a = list.stream().peek(num -> System.out.println("will filter " + num)).filter(x -> x > 5).findFirst().get();
System.out.println(a);
输出:
will filter 1
will filter 10
10
你可以看到它只处理了流的前两个元素。所以你可以采取这个非常好的方法的
回答三
@AjaxLeung已经回答了, 但是已经很难在评论中找到了.
只是用来检查
lst.stream().filter(x -> x > 5).findFirst().isPresent()
可以被简化为
lst.stream().anyMatch(x -> x > 5)
文章翻译自Stack Overflow:https://stackoverflow.com/questions/23696317/find-first-element-by-predicate
查找满足断言的第一个元素相关推荐
- 通过谓词查找第一个元素
本文翻译自:Find first element by predicate I've just started playing with Java 8 lambdas and I'm trying t ...
- python中prime_在AP中查找第一个元素,该元素是Python中给定Prime的倍数
假设我们有一个AP系列的第一项(A)和共同差(d),并且我们还有素数P,我们必须找到给定AP中第一个元素的位置,该位置是AP的倍数.给定素数P. 因此,如果输入像A = 3,D = 4,P = 5,则 ...
- python中用于返回元组中元素最小值的是_• 编写函数,查找序列元素的最大值和最小值。给定一个序列,返回一个元组,其中元组第一个元素为序列最大值,第二个元素为序列最小值 。_学小易找答案...
[计算题]编写函数 demo(m,n) ,接收两个正整数作为参数,返回一个元组,其中第一个元素为最大公约数,第二个元素为最小公倍数. (4.0分) [计算题]递归算法计算组合数.实现函数 cni(n, ...
- class 第一个元素_第二章(第3节):网页元素定位和操作
大家仔细思考一下,我们用 selenium 操控浏览器是什么意思,其实就是用 selenium 模拟人上网,也就是说人用浏览器能做的任何事情,我们用 selenium 都可以做,selenium 就如 ...
- css3怎么排除第一个,css怎么排除第一个子元素
css排除第一个子元素的方法:1.通过使用伪类选择器":not"实现排除:2.通过使用"nth-of-type"或者"nth-child"实 ...
- perl 哈希数组的哈希_第一个元素使用哈希在数组中出现K次
perl 哈希数组的哈希 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 Problem statement: 问题陈述: Find the fir ...
- C语言指针实数组输入输出,C语言:回来两个数组中第一个元素的指针,并输出这个值...
C语言:返回两个数组中第一个元素的指针,并输出这个值 // // main.c // Pointer_search // // Created by ma c on 15/8/2. // Co ...
- js查找数组中符合条件的元素
js查找数组中符合条件元素的几种方法 一.利用for循环进行查找 let arr = [{name: 'zhangsan', age: 18},{name: 'lisi', age: 17},{nam ...
- 如何从 Java 的 List 中删除第一个元素
概述 在这个实例中,我们将会演示如何删除在 Java 中定义的 List 的第 1 个元素. 我们将会针对这个问题使用 List 接口的 2 个实现 ArrayList 和 LinkedList 来进 ...
最新文章
- 机会是怎么变成陷阱的?
- 浏览器兼容编码与解码的问题
- JSP复习(二):EL表达式
- 学习笔记Hadoop(六)—— Hadoop集群的安装与部署(3)—— 配置ssh无密码登录
- catia的vh轴怎么显示_Origin入门教程(三):Origin中曲线怎么平移?
- goole机器学习视频链接【学习笔记】
- clion修改选中行的背景颜色
- oracle11g 隐藏参数_ORACLE 11GR2常用参数(含隐含参数)设置
- 用Delphi制作网络游戏外挂
- 原生Java高仿抖音短视频APP双端源码
- 果园机器人反思稿_《果园机器人》教学反思
- java 8 foreach获取索引
- mybatis java sql_mybatis java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;
- TP-LINK WR841N V8刷OpenWRT
- 国际国家代号mysql_最全的各国 语言(文化)代码与国家地区对照表(国际通用标准形式)...
- matlab节约里程法_节约里程法matlab.doc
- 双闭环调速 matlab,双闭环直流调速系统仿真(Matlab).ppt
- 疫情期间华为面试总结
- 寻找不能拼读的汉语拼音
- 隐函数存在定理隐函数的高阶导数
热门文章
- STL运用的C++技术(6)——函数对象
- 关于源文件用不同的编码方式编写,会导致执行结果不一样的现象及解决方法
- rename、remove
- 二维数组求平均值(指针的使用)
- python学法用法 自动刷分器_Python selenium模拟手动操作实现无人值守刷积分功能...
- JavaScript知识笔记(三)——内置对象、浏览器对象
- 模块之re模块 —— 正则
- Educational Codeforces Round 25 C. Multi-judge Solving
- 别人7天乐,运维还苦逼值班?
- C#深入浅出 关键字(一)