当前位置: 首页 > 知识库问答 >
问题:

有没有办法找到第一个匹配谓词的元素?[副本]

弘承业
2023-03-14

使用Java8+,您可以轻松找到与谓词匹配的集合的所有元素

someCollection.stream().filter(somePredicate)
someCollection.stream().filter(somePredicate).findFirst()

共有1个答案

漆雕安晏
2023-03-14

它完全符合你的要求。它并没有覆盖所有的元素。filter方法创建一个流,在它的顶部findfirst创建另一个流。

因此,当您尝试获取在findfirst()之后创建的流的元素时,您将只获得与谓词匹配的第一个元素。

最好的检查方法是在谓词中添加打印行或类似的东西。

创建一个整数流,例如从0到10,并创建一个谓词来打印数字,然后检查它是否被3除以。你会把这个打印出来:0,1,2,3,就是这样。

我以前写过一个问题+答案来更详细地解释它的工作原理:理解Java8Stream的过滤器方法

 类似资料:
  • 问题内容: 我想要一种惯用的方式来找到与谓词匹配的列表中的第一个元素。 当前代码非常丑陋: 我已经考虑过将其更改为: 但是必须有一些更优雅的方法……如果返回一个值而不是没有找到匹配项引发异常,那将是一个很好的选择。 我知道我可以像这样定义一个函数: 但是,如果已经有内置的插件开始用这样的实用函数填充代码,这是很鸡肋的(人们可能不会注意到它们已经在那里,因此随着时间的推移它们会不断重复出现)。 问题

  • 我刚刚开始玩Java 8 lambda,我正在尝试实现一些我在函数式语言中习惯的东西。 例如,大多数函数语言都有某种对序列进行操作的find函数,或返回第一个元素的列表,该元素的谓词为。我能看到的在《Java八号》中实现这一点的唯一方法是: 然而,这似乎没有效率,因为过滤器将扫描整个列表,至少在我的理解(这可能是错误的)。有更好的办法吗?

  • 在web上,我只找到了一种停止迭代方法的方法。通过使用limit()函数。但这会迭代一个具体的循环数。我想用它来停止一个谓词。 有没有办法用Streams做到这一点? 更新1:使用Java 8

  • 问题内容: 我有一个整数数组列表。我需要找到两者之间的共同点。我能想到的是 两个列表 中“ 通用”元素中列出的内容 的扩展 数组中也没有重复项。 有没有直接的方法可以做到这一点? 问题答案: 您可以将列表转换为集合,然后使用方法在不同集合之间进行交集。与所有集合相交后,剩下的就是公共元素,可以将结果集合转换回列表。

  • 我有这样的元素: 我想检索没有已定义。在这种情况下,元素。 对于这个问题,我得到了相反的结果: 我尝试了和的组合,但是我没有找到合适的解决方案。

  • 我试着用一根绳子: 并返回该字符串中的所有2字对。即: 但是现在,我能做的就是让它回来: 我如何定义我的同时循环,这样我就可以解释这种缺乏重叠的单词?我的代码如下:(真的,我很高兴它只是返回一个表示它找到了多少字符串子集的int...) 谢谢大家。