在groovy中从地图获取所有姓氏的最短路径?

时间:2013-01-21 18:30:22

标签: groovy

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

以下是我想回答的问题:

“我们有一个User和User类列表,其中包含姓名,姓氏属性。这是获取所有姓氏列表的最短代码?”

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 - 特纳

2 个答案:

答案 0 :(得分: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"
}

答案 1 :(得分:0)

您有地图列表。我们可以将该地图列表转换为姓氏列表并将其打印出来:

print map.collect { it.lastname }