无法使用java8迭代Hashmap

时间:2014-07-29 22:29:48

标签: iterator

下面给出的是我遇到麻烦的ccode snipet和我正在使用jdk 8.我在代码的粗体行中遇到错误,对于循环语句。我也提到了错误。:

做{

            jobid = br.readLine();
            metajson = br.readLine();
            JSONObject obj = (JSONObject) jsonParser.parse(metajson);
            System.out.println(jobid+" "+obj.toString());
        //The below one should work 

            ****for (HashMap.Entry<String, String> entry : obj.entrySet())****

            {

                System.out.println(entry.getKey() + "/" + entry.getValue());
            }

        }

错误: 线程“main”中的异常java.lang.Error:未解决的编译问题:     PropertyEntry无法解析为某种类型     重复的本地变量条目     无法将条目解析为某种类型     在com.journaldev.json.Insert3.main(Insert3.java:64) 此行中出现错误,指出“类型不匹配:无法从元素类型对象转换为Map.Entry&gt;”

我也尝试了Property.Map()和concept.Map(),但同样存在问题。我也导入了整个集合类。但我不知道错误没有解决。

1 个答案:

答案 0 :(得分:0)

因为返回的条目集的类型为<String, JSONObject>而不是<String, String>。 以下代码编译:

Set<Entry<String, JSONObject>> entrySet = jsonObject.entrySet();

    for (Entry<String, JSONObject> entry : entrySet) {
        String key = entry.getKey();
        JSONObject innerJsonObject = entry.getValue();
    }

无论如何,这个库(simple-json)的设计很糟糕。 JsonObject从HashMap原始类型继承自己(没有填充它的泛型类型声明),因此在编译时不知道生成的entrySet的类型。

提示:使用GSon或其他json库代替。