我正在编写一个递归函数,其目的是迭代 pList 文件。我的代码是
public static void HashMapper(Map lhm1) throws ParseException {
//Set<Object> set = jsonObject.keySet();
for (Object entry : lhm1.entrySet()) {
if(entry instanceof String)
{
System.out.println(entry.toString());
}
else
{
HashMapper((Map) ((Map) entry).keySet()); //getting Exception java.util.HashMap$HashMap Entry cannot be cast to java.util.Map
}
}
}
但是当我调用我的函数“HashMapper((Map)((Map)entry).keySet());”时。我遇到了一个例外
java.util.HashMap$HashMap 条目无法转换为 java.util.Map
我不知道如何调用我的函数以及如何将 Hashmap 条目转换为 Map
入境确实不是String
. It is Map.Entry
,因此您可以根据需要将其转换为这种类型。
然而,自从大约 10 年前引入 java 1.5 以来,您几乎不再需要强制转换。相反,使用泛型定义映射并使用类型安全编程。
不幸的是你的代码不太清楚。你的意思是你的地图的键或值是String
?假设键是字符串,值可以是字符串或映射。 (顺便说一句,这种做法非常糟糕,所以我建议您提出其他问题,描述您的任务是什么,并询问如何设计您的程序。)
但无论如何,到目前为止我可以建议你:
public static void hashMapper(Map<String, Object> lhm1) throws ParseException {
for (Map.Entry<String, Object> entry : lhm1.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
if (value instanceof String) {
System.out.println(value);
} else if (value instanceof Map) {
Map<String, Object> subMap = (Map<String, Object>)value;
hashMapper(subMap);
} else {
throw new IllegalArgumentException(String.valueOf(value));
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)