नक्शा <मानचित्र <स्ट्रिंग, स्ट्रिंग>, मानचित्र <स्ट्रिंग, स्ट्रिंग >> ग्रोवी में Iterate

हाय मेरे पास जटिल संरचना है

 Map, Map> a

और मैं अपने सभी तत्वों के माध्यम से पुन: प्रयास करना चाहता हूं। मैंने कोशिश की:

for(Map.Entry, Map> first:firstMap.keySet()) { 
...
}

और त्रुटि है

Cannot cast object '{key1=value1, key2=value2, key3=value3, key4=value4}' with class 'java.util.LinkedHashMap' to class 'java.util.Map$Entry' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.util.Map$Entry(java.util.LinkedHashMap)

मेरे मानचित्र पर फिर से कैसे करें?

4

2 उत्तर

The keySet() returns only its keys, so it is a List of Map. If you want to iterate through its Map.Entry, drop the .keySet():

for (Map.Entry, Map> entry : firstMap) {
  println "entry=$entry"
}

अन्य लूपिंग विकल्प:

// iterate with two arguments
firstMap.each { Map key, Map value ->
  println "key=$key, value=$value"
}

// iterate through entries
firstMap.each { Map.Entry, Map> entry ->
  println "entry=$entry"
}

// untyped
for (entry in firstMap) {
  println entry
}
4
जोड़ा

आप बस प्रत्येक का उपयोग कर सकते हैं:

def a = [ ([a:'tim',b:'xelian']):[ a:1,b:2 ],
          ([a:'alice',b:'zoe']):[ a:3,b:4 ] ]

a.each { key, value ->
    println "Key $key == Value $value"
}
3
जोड़ा