Map Java的递归迭代

我正在编写一个递归函数,其目的是迭代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。它是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));

}

}

}

以上是 Map Java的递归迭代 的全部内容, 来源链接: utcz.com/qa/424426.html

回到顶部