2012-06-24 14 views
16

In Groovy eine neue Liste von einem Objektfeld zu extrahieren, wie entpacke ich eine neue Liste aus den folgenden:Wie in 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 
    } 

, so dass die neue Liste sieht wie folgt aus:

["Tom", "Abigail", "Joyce", "James", "Scott", "Ruth"]  

Antwort

22

können Sie tun:

def names = people.name 
+0

Perfect, wie würde ich "Tom" mit "Tim" in dem Prozess ersetzen? – Reimeus

+5

Du brauchst etwas wie 'people.collect {it.name == 'Tom'? 'Tim': it.name} ' –

+0

@tim_yates Gibt es irgendeinen Grund, warum du das anstelle von' def names = people * .name' vorziehst? Ich persönlich bevorzuge das spätere. (Übrigens finde ich es witzig, dass Reimeus Tom durch dich ersetzen will = P) – epidemian