我会这样做以获得一个字段:
devices.find { it.id == 'PPL000000011906' }?.firstName
如果你想要闭包和参数,我会这样做:
def findPerson = { person -> devices.find { it.id == person } }
def myPerson = findPerson('PPL000000011906')
println "FirstName: ${myPerson?.firstName} LastName: ${myPerson?.lastName}"
如果你想发疯,你可以这样做:
ArrayList.metaClass.findThingInMap = { field, value -> delegate.find { it[field] == value } }
这样做是允许您在任何包含哈希映射的数组列表中找到字段的值,这就是您所拥有的。
def myPerson = devices.findThingInMap('id', 'PPL000000011906')
println "FirstName: ${myPerson?.firstName} LastName: ${myPerson?.lastName}"
除非您需要灵活性,否则我不会真正这样做,但这显示了 groovy 的真正力量和令人敬畏。