gpt4 book ai didi

java - 从 HashMap 的 HashMap 中检索对象的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:05 28 4
gpt4 key购买 nike

我正在编写递归遍历 XML 文件并填充 HashMap 的 HashMap 的代码。我已经能够填充 hashmap,它看起来不错。但是,当我运行这个命令时

 System.out.println(map.containsKey("Mary"));

它总是错误的。真的不确定为什么它总是返回 false。我还在

之后发布了我的递归代码和 hashmap 的内容
map.toString() 
map is { Mary
={24
={established
={western
={Profile=m}}, torn-down
={western
={Profile=b}, eastern
={Profile=m}}}, 44
={established
={western
={Profile=g}, eastern
={Profile=s}}, torn-down
={western
={Profile=j}, western
={Profile=f}}}}, Martha
={24
={established
={western
={Profile=a}}, torn-down
={western
={Profile=b}, eastern
={Profile=n}}}, 44
={established
={western
={Profile=s}, eastern
={Profile=j}}, torn-down
={western
={Profile=k}, eastern
={Profile=g}}}}}

递归代码是:

NodeList l = doc.getElementsByTagName("Branches");
Node n = l.item(0);
map = new HashMap();
recurse(n, map);

private void recurse(Node n, HashMap map){
if (n.hasChildNodes()){
NodeList nl = n.getChildNodes();

for(int i= 0; i< nl.getLength(); i++){
Node node = nl.item(i);

if(node.getNodeType() == Node.ELEMENT_NODE){
if (!node.getNodeName().equals("Profile") ){

map.put(node.getFirstChild().getNodeValue(), new HashMap());

recurse(node, (HashMap)map.get(node.getFirstChild().getNodeValue()));
}
else {

map.put("Profile", node.getFirstChild().getNodeValue());
}


}
}
}

}

谢谢!

最佳答案

应 OP 的要求-并且由于评论中的讨论解决了他的问题-我将其包装为答案-供 future 的读者使用:

首先,您应该检查您的 key 是否确实是 String 对象。您可以通过添加以下行来完成:

System.out.println(map.keySet().iterator().next().getClass());

接下来,在我们确定您的键确实是 String 之后,我们要检查您是否有不可见字符或不需要的空格,我们将通过添加以下行来完成:

String s = (String)map.keySet().iterator().next(); 
System.out.println("val=" + s + " length=" + s.length());

如果确实存在不可见字符 - 我们会知道,因为长度不匹配。

如果这确实是原因 [正如 OP 所说],您将必须在读取 XML 时处理您的字符串以排除这些字符。

此外,作为旁注 - 我建议避免使用原始类型,并建议您使用 generic types只要有可能。它将为您提供更具可读性的代码,以及type safety。 !
如果你想要无限嵌套,那么我会使用composite design pattern实现它。

关于java - 从 HashMap 的 HashMap 中检索对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com