grails - 如何将 map 动态添加到列表?

标签 grails groovy

如我在问题中所述,我想将 map 动态添加到列表中,并避免使用相同的键添加 map ,我正在尝试这样做

def myList = []
["a", "b", "c", "c", "d", "e", "f", "a" ,"f"].each { letter ->
   def map = [:]

   //here I want to check if current letter exist as key in myList
   //if it is true then avoid next code

   map.put(letter, [])
   myList << map
}

println myList

在现实生活中,字母将由用户添加。

最佳答案

干得好:

def myList = []

["a", "b", "c", "c", "d", "e", "f", "a" ,"f"].each { letter ->  
   if(!myList.find { it.keySet().contains(letter) })
      myList << [(letter): []]
}
assert myList ==  [[a:[]], [b:[]], [c:[]], [d:[]], [e:[]], [f:[]]]

或者您可以简单地:
def myList = ["a", "b", "c", "c", "d", "e", "f", "a" ,"f"].unique().collect { [(it):[]] }
assert myList ==  [[a:[]], [b:[]], [c:[]], [d:[]], [e:[]], [f:[]]]

关于grails - 如何将 map 动态添加到列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26186147/

相关文章:

json - 使用默认Grails JSON渲染器时的Snake case json

grails - 在grails 2.4.0中安装grails web flow插件

Groovy 范围 - 如何在方法中访问脚本变量

java - Jenkins 远程处理可使用groovy在从属设备上调用

grails - Groovy/GSP 中鸭子打字的安全操作符

java - 没有在 grails/java 中始终如一地获取对象 ID

hibernate - hibernate 加载功能遗忘了吗?

grails - 我怎样才能绕过 : "query did not return a unique result"

Groovy:定义不带 "def"的变量与使用锚定有什么区别?

java - 如何使用 logback 禁用 accessExternalDTD 和 entityExpansionLimit 警告