0

我是 groovy 的新手,在从包含用户列表(即名字和姓氏)的地图中获取所有姓氏的逻辑上有点挣扎。

以下是我试图回答的一个问题:

“我们有一个用户列表,用户类具有名称、姓氏属性。获取所有姓氏列表的最短代码是什么?”

class Users {

  String fName
  String lName

  String toString() {
    return fName + " " + lName
  }

  static main(args){

    Users user = new Users()
    def keys = []
    def map = [[firstname:'michael',lastname:"turner",department:"finanace"],
               [firstname:'james',lastname:"spencer",department:"finanace"]]
    map.find{it.key == map[name]}.each{
      println keys += it.value
    }
    def counter = 1
    keys.each {
      println "Surname $counter - " it
      counter++
    }
  }
 i.e. : 
  user.setFName(pass fName from loop to Users class)
  user.setLName(pass lName from loop to Users class)
}

控制台上的预期输出

姓 1 - 斯宾塞
姓 2 - 特纳

4

2 回答 2

0

那将是map.lastname

assert map.lastname == ['turner', 'spencer']

对,要得到你(现在)说你想要的输出:

map.lastname.eachWithIndex { name, idx ->
  println "surname ${idx + 1} - $name"
}

或者:

map.eachWithIndex { submap, idx ->
  println "surname ${idx + 1} - $submap.lastname"
}
于 2013-01-21T18:31:37.253 回答
0

你有地图列表。我们可以将该地图列表转换为姓氏列表并像这样打印:

print map.collect { it.lastname }
于 2013-01-22T08:21:47.640 回答