Groovy有一个调用的方法Collection.findAll(Closure closure)
,它过滤掉所有不满足谓词的值(表示为闭包):
println listOfMap.findAll { map -> map.METHOD == 'CLICK' && map.RESULT == 'FAIL' } // Output: [[TESTCASE:2, METHOD:CLICK, RESULT:FAIL], [TESTCASE:3, METHOD:CLICK, RESULT:FAIL]]
还有一种方法DefaultGroovyMethods.count(Iterable
需要一个谓词并计算有多少元素满足它:
println listOfMap.count { map -> map.METHOD == 'CLICK' && map.RESULT == 'FAIL' } // Output: 2
要从地图列表中选择给定键的值,您可以使用Groovy的扩展运算符:
println listOfMap*.METHOD // btw, listOfMap.METHOD will do the same
此代码转换为"为内部的每个元素listOfMap
获取键的值METHOD
.在下一步中,您可以使用Collection.unique()
方法删除所有重复项:
println listOfMap*.METHOD.unique() // Output: [CLICK, TYPETEXT]
警告:以下方法在Jenkins管道Groovy脚本中不起作用.在这种情况下,您必须Collection.collect(Closure closure)
明确使用:
println listOfMap.collect { map -> map.METHOD }.unique()