如何在Groovy中从对象字段提取新列表

如何在Groovy中从对象字段提取新列表,groovy,Groovy,在Groovy中,如何从以下内容中提取新列表: def people = [ new Person(name:"Tom", yearOfBirth:1985), new Person(name:"Abigail", yearOfBirth:1987), new Person(name:"Joyce", yearOfBirth:1984), new Person(name:"James", yearOf

在Groovy中,如何从以下内容中提取新列表:

   def people = [ 
           new Person(name:"Tom", yearOfBirth:1985),
           new Person(name:"Abigail", yearOfBirth:1987),
           new Person(name:"Joyce", yearOfBirth:1984),
           new Person(name:"James", yearOfBirth:1987),
           new Person(name:"Scott", yearOfBirth:1985),
           new Person(name:"Ruth", yearOfBirth:1984)
       ]  

   class Person {
       String name
       int yearOfBirth
   }
因此,新列表如下所示:

 ["Tom", "Abigail", "Joyce", "James", "Scott", "Ruth"]    
你可以做:

def names = people.name

很好,在这个过程中,我如何用“Tim”替换“Tom”呢?你需要像
people.collect{it.name='Tom'?'Tim':it.name}
@Tim_-yates这样的东西,而不是
def-names=people*.name
?我个人更喜欢后者。(顺便说一句,我觉得很有趣,雷默斯想用你代替汤姆)@epidemian他们最终都是一样的,假设人们是一个列表。。。查看我的代码时,我使用了这两种方法:-/I like
*。
因为它表达了您所做的更多,但是
的输入更少;-)幸好我们替换了汤姆,他没有发挥他的作用;-)@tim_yates,在这个例子中,我觉得两种语法都可以,因为这是一个非常简单的例子。但总的来说,我更喜欢
*.prop
,因为我觉得它的意思更明显;它的意思总是
.collect{it.prop}
people.name
选项依赖于
people
对象(一个
propertyMissing
实现,它没有
name
属性)上的一点魔力,我最好不要每次看到这个表达式时都记住它:)