Map of Map iteration



我将两个不同结构的map存储在一个map中,

Map<String, List<String>> colMap = new HashMap<String, List<String>>();
Map<String, String> appMap = new HashMap<String, String>();
// colMap assigning some values
// appMap assigning some values
Map<String, Map> mainMap = new HashMap<String, Map>();
mainMap.put("appMap", appMap);
mainMap.put("colMap", colMap);

我想一个一个地获取map,然后迭代映射

如果我像下面这样尝试get map,得到错误,

.......
Map colMap = map.get("colMap");
for(Entry<String, List<String>> entry : colMap.entrySet())
Error: Type mismatch: cannot convert from element type Object to Map.Entry<String,List<String>>

为什么不为两个映射创建一个简单的容器POJO类(或在Java 16+中记录)而不是mainMap,并保持相关的类型安全,以Java的方式做到这一点?

public class MapPojo {
private final Map<String, List<String>> colMap;
private final Map<String, String> appMap;
public MapPojo(Map<String, List<String>> colMap, Map<String, String> appMap) {
this.colMap = colMap;
this.appMap = appMap;
}
// getters, etc.
}
MapPojo mainMap = new MapPojo(colMap, appMap);

你得到的错误,因为当你做地图。get操作你的引用是没有任何泛型的映射,它将被视为对象类的引用。你应该像下面这样使用泛型,它会起作用的-

Map<String, List<String>> colMap = map.get("colMap");
for(Entry<String, List<String>> entry : colMap.entrySet())

最新更新