地图与Key作为字符串和值在Groovy列表(Map with Key as String and

2019-07-31 07:29发布

任何人都可以点我如何使用一个例子Map在Groovy其中有一个String作为它的密钥和List的价值?

Answer 1:

Groovy中接受几乎所有的Java语法,所以有一个选择范围,如下图所示:

// Java syntax 

Map<String,List> map1  = new HashMap<>();
List list1 = new ArrayList();
list1.add("hello");
map1.put("abc", list1); 
assert map1.get("abc") == list1;

// slightly less Java-esque

def map2  = new HashMap<String,List>()
def list2 = new ArrayList()
list2.add("hello")
map2.put("abc", list2)
assert map2.get("abc") == list2

// typical Groovy

def map3  = [:]
def list3 = []
list3 << "hello"
map3.'abc'= list3
assert map3.'abc' == list3


Answer 2:

def map = [:]
map["stringKey"] = [1, 2, 3, 4]
map["anotherKey"] = [55, 66, 77]

assert map["anotherKey"] == [55, 66, 77] 


Answer 3:

附加一个小片与地图/列表处理时如在图中的值是是有帮助withDefault(Closure)在常规的地图的方法。 而不是做下面的代码:

Map m = [:]
for(object in listOfObjects)
{
  if(m.containsKey(object.myKey))
  {
    m.get(object.myKey).add(object.myValue)
  }
  else
  {
    m.put(object.myKey, [object.myValue]
  }
}

你可以做到以下几点:

Map m = [:].withDefault{key -> return []}
for(object in listOfObjects)
{
  List valueList = m.get(object.myKey)
  m.put(object.myKey, valueList)
}

在默认可用于其他的东西为好,但我觉得这是最常见的情况我。

API: http://www.groovy-lang.org/gdk.html

地图 - > withDefault(闭幕)。



Answer 4:

你不需要申报地图常规内部识别它

def personDetails = [firstName:'John', lastName:'Doe', fullName:'John Doe']

// print the values..
    println "First Name: ${personDetails.firstName}"
    println "Last Name: ${personDetails.lastName}"

http://grails.asia/groovy-map-tutorial



Answer 5:

约瑟夫忘了在他的例子中添加值withDefault 。 这是我最后使用的代码:

Map map = [:].withDefault { key -> return [] }
listOfObjects.each { map.get(it.myKey).add(it.myValue) }


文章来源: Map with Key as String and Value as List in Groovy
标签: groovy map