HashMaps遍历的HashMap
在Java中,我试图检索一个HashMap
,其对象为:HashMap
。
我实现了一个递归函数,该函数返回使用给定键找到的 HashMap
,如果未找到该键,则返回 null
。
这是函数:
public static HashMap<String, Object> getHashMap(HashMap<String,
Object> map, String key)
{
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getValue().getClass().getName() == "java.util.HashMap") {
if (entry.getKey() == key)
return (HashMap<String, Object>) entry.getValue();
return getHashMap((HashMap<String, Object>) entry.getValue(), key);
}
}
return null;
}
它仅适用于第一项。如何遍历 HashMap 的 Hashmap?什么是更好的方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不要在此处立即返回值:
您需要首先检查它是否不为 null,然后才返回它。否则你应该继续搜索:
Instead of returning the value immediately here:
you want to first check if it is not
null
, and return it only then. Otherwise you should just continue searching:其一,不要对字符串使用
==
。而是使用 equals 方法。另一方面,我更喜欢使用 instanceof ,例如
if (myObject instanceof java.util.Map) { ... }
这样,如果以后您决定更改,您的地图不必是 HashMap它。For one, don't use
==
for Strings. Instead use the equals method.For another, I prefer to do instanceof such as
if (myObject instanceof java.util.Map) { ... }
this way your map doesn't have to be a HashMap if later you decide to change it.另一种方法。尝试使用
HashMap> main
作为您的“外部”HashMap,然后您将搜索key
:Another approach. Try use
HashMap<String, HashMap<String, Object>> main
for your 'outer' HashMap, then you'll search forkey
: