Groovy:java流anyMatch的模拟是啥

Posted

技术标签:

【中文标题】Groovy:java流anyMatch的模拟是啥【英文标题】:Groovy: what is analogue for java stream anyMatchGroovy:java流anyMatch的模拟是什么 【发布时间】:2018-04-11 17:10:37 【问题描述】:

以下操作的 Groovy 类比是什么?

list.stream().anyMatch(b -> b == 0); 

【问题讨论】:

您能否检查一下解决方案是否有帮助? 【参考方案1】:

您的意思是查找列表是否包含元素0

def list = [0,1,2,3,4]
def result = list.anyit == 0
println result

大家可以在线快速试用demo

【讨论】:

如果我的list 不是原语列表怎么办。但是对象列表,我想按里面的属性过滤? @Rudziankoŭ 您只需更改谓词it == 0,与Java Stream API 相同。 it 任意名称吗? it 不是任意名称。这是闭包参数默认获得的名称,如果您不声明一个。 it == 0someArg -> someArg == 0 相同。 “如果我的列表不是原语列表怎么办。但是对象列表,我想按里面的属性过滤?” - 你可以做类似 it.homeAddress.town == 'St. Louis'的事情。【参考方案2】:

Groovy 语法的范围从 Java 风格到惯用的 Groovy。这两种方法都有效:

// Java-esque
List<Integer> list = [4,3,2,1,0]
assert list.stream().any b -> b == 0 

// Groovier (note `it` is an alias for the parameter)
def list2 = [4,3,2,1,0]
assert list2.stream().any it == 0 

【讨论】:

以上是关于Groovy:java流anyMatch的模拟是啥的主要内容,如果未能解决你的问题,请参考以下文章

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

Groovy在英文中是啥意思

Java 8 stream forEach filter anyMatch

如何知道java-8中的哪个元素匹配anymatch?

《Java8实战》 - 读书笔记 - Stream流的基本用法

我可以在 groovy 中使用映射强制来模拟具有带参数的构造函数的类吗?