43

キーと値としてMapを持っているGroovyでの使用方法の例を誰かに教えてもらえますか?StringList

4

5 に答える 5

62

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
于 2012-09-04T09:35:35.790 に答える
22
def map = [:]
map["stringKey"] = [1, 2, 3, 4]
map["anotherKey"] = [55, 66, 77]

assert map["anotherKey"] == [55, 66, 77] 
于 2012-09-02T15:30:29.210 に答える
13

マップの値としてマップ/リストを処理するときに役立つもう1つの小さな部分はwithDefault(Closure)、Groovyのマップのメソッドです。次のコードを実行する代わりに:

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(Closure)

于 2015-08-28T19:48:25.147 に答える
10

Mapgroovyが内部で認識していることを宣言する必要はありません

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

于 2017-05-30T10:39:37.790 に答える
5

ジョセフは、彼の例で値を追加するのを忘れていましたwithDefault。これが私が使用することになったコードです:

Map map = [:].withDefault { key -> return [] }
listOfObjects.each { map.get(it.myKey).add(it.myValue) }
于 2018-04-26T06:34:46.743 に答える