Java Hashmap中的Hashmap

Java Hashmap中的Hashmap,java,hashmap,maps,Java,Hashmap,Maps,我有一个哈希图 Map<String, Object> grpFields = new HashMap<String, Object>(); 其中453是Hashmap,但是当尝试使用以下方法从父Hashmap提取Hashmap时: HashMap <String, Object> grpMap453 = (HashMap)targetFields.get(453); 当然调用targetFields.get(453); 应该只返回一个hashmap吗?我

我有一个哈希图

Map<String, Object> grpFields = new HashMap<String, Object>();
其中453是Hashmap,但是当尝试使用以下方法从父Hashmap提取Hashmap时:

HashMap <String, Object> grpMap453 = (HashMap)targetFields.get(453);
当然调用
targetFields.get(453);

应该只返回一个hashmap吗?

我试着根据您所描述的内容制作一个演示,没有发现任何错误

    HashMap<String, Object> hashMap = new HashMap<String, Object>();
    hashMap.put("123", "xyz");
    HashMap<Integer, Object> map = new HashMap<Integer, Object>();
    map.put(453, hashMap);
    HashMap<String, Object> newMap = (HashMap<String, Object>) map.get(453);

    System.out.println("Main map "+ hashMap);
    System.out.println("Map inside map "+map);
    System.out.println("Extracted map "+newMap);
HashMap HashMap=newhashmap();
hashMap.put(“123”,“xyz”);
HashMap=newHashMap();
map.put(453,hashMap);
HashMap newMap=(HashMap)map.get(453);
System.out.println(“主映射”+哈希映射);
System.out.println(“地图内部地图”+地图);
System.out.println(“提取的映射”+newMap);
它在
HashMap newMap=(HashMap)map.get(453)行给出警告即“类型安全:未选中从对象到HashMap的强制转换”,但没有任何错误

你也这么做了吗?

而不是:

HashMap <String, Object> grpMap453 = (HashMap)targetFields.get(453);
HashMap grpMap453=(HashMap)targetFields.get(453);
试一试

HashMap grpMap453=(HashMap)targetFields.get(453);

如前所述,您无法从提取HashMap的代码行中获取该错误。但是,您将通过以下代码行收到该错误:

String s11 = (String)targetFields.get(453);

将值放入HashMap

HashMap<String, Map<?,?>> hashMap = new HashMap<String, Map<?,?>>();

Map<String, String> internalHashMap  = new HashMap<String, String>()

internalHashMap.put("TEST_KEY1","TEST_Value1");
internalHashMap.put("TEST_KEY2","TEST_Value2");
internalHashMap.put("TEST_KEY3","TEST_Value3");

hashMap.put("TEST_KEY",internalHashMap);
HashMap>();
Map internalHashMap=newhashmap()
internalHashMap.put(“TEST_KEY1”、“TEST_Value1”);
internalHashMap.put(“TEST_KEY2”、“TEST_Value2”);
internalHashMap.put(“TEST_KEY3”、“TEST_Value3”);
put(“TEST_KEY”,internalHashMap);

您显示的行与错误消息不匹配。抱歉,我被难住了-我不知道您是如何在该行中得到该错误的。堆栈跟踪是否显示源于该行或get()中的某个位置的问题?您可以暂时尝试获取453作为对象,然后看看您得到了什么!很抱歉,我看不出这两行代码之间的区别。@javanna:也许现在你可以看到区别了。你需要检查一下你的眼睛,有一个非常明显的区别。一个是简单地将结果强制转换为Hashmap,另一个是明确地将结果强制转换为Hashmap。因为您不理解或无法阅读而否决答案不会给您带来太多帮助。祝你和你的雇主好运。。我觉得他们需要它。@user756212我没有投反对票。无论如何,看看编辑历史,你的两行是一样的。哈利·乔伊纠正了它们,现在差别非常明显……所以,我的眼睛一点问题都没有。
HashMap <String, Object> grpMap453 = (HashMap)targetFields.get(453);
HashMap <String, Object> grpMap453 = (HashMap<String,Object>)targetFields.get(453);
String s11 = (String)targetFields.get(453);
HashMap<String, Map<?,?>> hashMap = new HashMap<String, Map<?,?>>();

Map<String, String> internalHashMap  = new HashMap<String, String>()

internalHashMap.put("TEST_KEY1","TEST_Value1");
internalHashMap.put("TEST_KEY2","TEST_Value2");
internalHashMap.put("TEST_KEY3","TEST_Value3");

hashMap.put("TEST_KEY",internalHashMap);