2012-06-24 26 views
16

Trong Groovy, làm thế nào để trích xuất một danh sách mới sau:Làm thế nào để trích xuất một danh sách mới từ một lĩnh vực đối tượng trong 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 
    } 

sao cho danh sách mới trông như thế này:

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

Trả lời

22

Bạn có thể làm:

def names = people.name 
+0

Hoàn hảo, làm cách nào để thay thế "Tom" bằng "Tim" trong quy trình? – Reimeus

+5

Bạn sẽ cần một cái gì đó như 'people.collect {it.name == 'Tom'? 'Tim': it.name} ' –

+0

@tim_yates Có lý do nào bạn thích điều này thay vì' def names = people * .name'? Cá nhân tôi thích sau này. (BTW, tôi thấy buồn cười khi Reimeus muốn thay thế Tom với bạn = P) – epidemian

Các vấn đề liên quan