gpt4 book ai didi

java - Map Java的递归迭代

转载 作者:行者123 更新时间:2023-11-29 10:13:51 25 4
gpt4 key购买 nike

我正在编写一个递归函数,其目的是遍历 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());”时。我得到一个异常(exception)

java.util.HashMap$HashMap Entry cannot be cast to java.util.Map

我不知道如何调用我的函数以及如何将 Hashmap 条目转换为 Map

最佳答案

条目确实不是String。它是 Map.Entry,因此您可以根据需要将其转换为该类型。

然而,自从大约 10 年前引入的 Java 1.5 以来,您几乎不需要转换。而是使用泛型定义映射并使用类型安全编程。

不幸的是你的代码不是很清楚。您的意思是 map 的键或值是 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));
}

}
}

关于java - Map Java的递归迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140804/

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