Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建HashMap<;字符串,映射>;从列表<;地图<;字符串,对象>&燃气轮机;给出java.lang.ClassCastException_Java_List_Hashmap_Iteration_Classcastexception - Fatal编程技术网

创建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)上,我解决了上面几行代码的问题,而不是我正在使用的大量代码。感谢您的输入。