Java stream 中 能不能将 anyMatch 和 filter 连起来用的写法

2020-02-13 15:21:21 +08:00
 rqxiao

if(list.stream().anyMatch(x->"aaa".equals(x.getName())){

list.stream().filter(x->"aaa".equals(x.getName()) }

else{

}

2895 次点击
所在节点    程序员
12 条回复
casillasyi
2020-02-13 15:23:52 +08:00
先 filter 再 anyMatch 不行吗,filter 不命中,后面的结果集是空
ipwx
2020-02-13 15:31:07 +08:00
@casillasyi filter 了为啥还要 anyMatch ??
casillasyi
2020-02-13 15:42:31 +08:00
@ipwx 好问题,filter 不是规约操作,需要一个结果集的判断或者收集
chendy
2020-02-13 16:00:42 +08:00
不知道具体要做什么
感觉 filter + collect
然后判断结果是不是 empty,再做对应操作是不是更合适?
ipwx
2020-02-13 16:19:08 +08:00
@casillasyi 可是 O(2n) 浪费计算时间啊。。。
Mistwave
2020-02-13 16:21:26 +08:00
没有
rqxiao
2020-02-13 16:32:17 +08:00
@chendy 额 你说的对
rqxiao
2020-02-13 16:32:52 +08:00
@chendy 就是想用试下这个 anyMatch
jimotudou
2020-02-13 17:20:43 +08:00
或者不是 filter + findFirst 或者 findAny 就行嘛
casillasyi
2020-02-14 11:21:25 +08:00
@ipwx 复杂度中没有 O(2n)的说法,O(2n)=O(n)
ipwx
2020-02-14 11:27:23 +08:00
@casillasyi 不要本本主义嘛。我这也只是借用了 O 这个符号表达我的意思。

不同阶的算法比较,忽略常数即可。但是我们在说同阶的事情,当然带上常数比较可以得到更多信息。无论是 O(kn) vs O(n) 还是 O(n+k) vs O(n),都是计算量上有差别嘛。不然也不会存在“常数优化”的事情了。
casillasyi
2020-02-14 11:30:09 +08:00
@ipwx 🤝

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/644318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX