嗨,我有复杂的结构
Map<Map<String,String>, Map<String,String>> a
Run Code Online (Sandbox Code Playgroud)
我想遍历所有元素。我试过了:
for(Map.Entry<Map<String,String>, Map<String,String>> first:firstMap.keySet()) {
...
}
Run Code Online (Sandbox Code Playgroud)
错误是
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)
Run Code Online (Sandbox Code Playgroud)
如何遍历我的地图?
该keySet()只返回它的钥匙,因此它是一个列表Map<String, String>。如果要遍历它Map.Entry,请删除.keySet():
for (Map.Entry<Map<String, String>, Map<String, String>> entry : firstMap) {
println "entry=$entry"
}
Run Code Online (Sandbox Code Playgroud)
其他循环选项:
// iterate with two arguments
firstMap.each { Map<String, String> key, Map<String, String> value ->
println "key=$key, value=$value"
}
// iterate through entries
firstMap.each { Map.Entry<Map<String, String>, Map<String, String>> entry ->
println "entry=$entry"
}
// untyped
for (entry in firstMap) {
println entry
}
Run Code Online (Sandbox Code Playgroud)
你可以只使用each:
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"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7875 次 |
| 最近记录: |