创建HashMap<;字符串,映射>;从列表<;地图<;字符串,对象>&燃气轮机;给出java.lang.ClassCastException
下面是我的代码。任何帮助都将不胜感激。 我根本无法阅读列表和创建地图。 我正在将创建HashMap<;字符串,映射>;从列表<;地图<;字符串,对象>&燃气轮机;给出java.lang.ClassCastException,java,list,hashmap,iteration,classcastexception,Java,List,Hashmap,Iteration,Classcastexception,下面是我的代码。任何帮助都将不胜感激。 我根本无法阅读列表和创建地图。 我正在将列表作为 函数参数直到Rest层。在Rest代理中调用其 简单列表。在我的服务层中,我需要使用列表中存储的映射值 我的列表中有前面提到的值 [{ID=56, VALUE=CPR,DESCRIPTOR=HEAD}, {ID=68,VALUE=RegFinance,DESCRIPTOR=FINANCE}] 我想要一个使用列表创建地图,格式如下 {56={ID=56, VALUE=CPR,DESCRIPTOR=HEAD
列表作为
函数参数直到Rest层。在Rest代理中调用其
简单列表。在我的服务层中,我需要使用列表中存储的映射值
我的列表中有前面提到的值
[{ID=56, VALUE=CPR,DESCRIPTOR=HEAD},
{ID=68,VALUE=RegFinance,DESCRIPTOR=FINANCE}]
我想要一个使用列表创建地图,格式如下
{56={ID=56, VALUE=CPR,DESCRIPTOR=HEAD},
68={ID=68,VALUE=RegFinance,DESCRIPTOR=FINANCE}}
下面的代码在rest调用之前工作,即在控制器层,但在rest调用之后在服务层不工作
Map<String, Object> userRoleMap = new HashMap<>();
for (int count = 0; count < allRolesDetails.size(); count++) {
//Map<String, Object> mapp=allRolesDetails.get(count);
//Above line Gives Exception
String[] singleColumn = allRolesDetails.get(count).toString().split(",");
//Above line Gives Exception
for(String pair : singleColumn)
{
String[] entry = pair.split("=");
userRoleMap.put(entry[1].trim(),allRolesDetails.get(count));
break;//add them to the hashmap and trim whitespaces
}
}
Map userRoleMap=newhashmap();
对于(int count=0;count
已尝试StackoverFlow上的所有其他选项
Iterator<Map<String, Object>> it = allRolesDetails.iterator();
while (it.hasNext()) {
Map<String, Object> map = it.next(); //so here you don't need a potentially unsafe cast
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
}
Iterator it=allRolesDetails.Iterator();
while(it.hasNext()){
Map Map=it.next();//所以这里不需要潜在的不安全强制转换
对于(Map.Entry:Map.entrySet()){
System.out.println(entry.getKey()+“=”+entry.getValue());
}
}
及
for(地图地图:allRolesDetails){
对于(Map.Entryentry:Map.entrySet()){
String Key=entry.getKey();
对象值=entry.getValue();
}
}
在所有情况下,每当我使用allRolesDetails.get(count)
或尝试使用迭代器或Map.Entry时,都会出现以下异常
java.lang.ClassCastException:java.lang.String不能强制转换为java.util.Map
Map userRoleMap=newhashmap();
用于(地图m:allRolesDetails){
userRoleMap.put(m.get(“ID”),m);
}
我找到了解决办法。
正如我提到的
下面的代码在进行rest调用之前工作,即在控制器层,但
rest调用后服务层不工作
Map<String, Object> userRoleMap = new HashMap<>();
for (int count = 0; count < allRolesDetails.size(); count++) {
//Map<String, Object> mapp=allRolesDetails.get(count);
//Above line Gives Exception
String[] singleColumn = allRolesDetails.get(count).toString().split(",");
//Above line Gives Exception
for(String pair : singleColumn)
{
String[] entry = pair.split("=");
userRoleMap.put(entry[1].trim(),allRolesDetails.get(count));
break;//add them to the hashmap and trim whitespaces
}
}
我在RestProxy调用中传递的参数类型存在问题
我传递的是@QueryParam(value=“allRolesDetails”)List allRolesDetails
,而不是final List allRolesDetails
。在此更改之后,在迭代列表时检索到正确的映射。
这篇文章帮助我发现了我的问题。
欢迎使用堆栈溢出!请查看该网站的工作原理以及此处的主题问题,并相应地编辑您的问题。另请参见:您有两个映射?是的,其中一个是空映射userRoleMap,我想在其中填充列表中的值,但仍在下面为我提供异常(映射m:allRolesDetails){java.lang.ClassCastException:java.lang.String无法转换为sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)上com.apple.sfo.workflow.service.InventoryServiceImpl.fetchCenterForDetails(InventoryServiceImpl.java:4649)上的java.util.Map在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)上,我解决了上面几行代码的问题,而不是我正在使用的大量代码。感谢您的输入。