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 == 0
与 someArg -> 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()用法详解
Java 8 stream forEach filter anyMatch