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

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

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

【问题讨论】:

  • 您能否检查一下解决方案是否有帮助?

标签: java groovy functional-programming closures java-stream


【解决方案1】:

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

def list = [0,1,2,3,4]
def result = list.any{it == 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 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 2022-12-09
    • 2011-02-03
    • 1970-01-01
    • 2011-03-20
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多