Map.Entry是原始类型.通用类型Map <K,V> .Entry <K,V>的引用应该是

The*_*ime 1 java

我在地图中使用arrayList分配双键并尝试从地图中检索数据,但我在下面收到此错误.我怎样才能让它发挥作用?

此行的多个标记 - Map.Entry是原始类型.应该参数化泛型类型Map.Entry参数化 - 类型不匹配:无法从Object转换为Map.Entry

Map<Double, ArrayList<Integer>> map = new HashMap<Double, ArrayList<Integer>>();
    else {

                Map<Double, ArrayList<Integer>> mapResult = db.detectRoute(latD, longD);
                Iterator it = mapResult.entrySet().iterator();
                while(it.hasNext()){
                    //The error starts here.
                    Entry e =  it.next();
                    double distance = entry.getkey();
                    ArrayList<Integer> value = entry.getValue();

                }
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 9

好吧,停止使用原始类型:

Map<Double, ArrayList<Integer>> mapResult = db.detectRoute(latD, longD);
Iterator<Map.Entry<Double, ArrayList<Integer>>> it = mapResult.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry<Double, ArrayList<Integer>>> e =  it.next();
    Double distance = entry.getKey();
    ArrayList<Integer> value = entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)

或者更简单:使用foreach循环:

Map<Double, ArrayList<Integer>> mapResult = db.detectRoute(latD, longD);
for (Map.Entry<Double, ArrayList<Integer>>> entry : mapResult.entrySet()) {
    Double distance = entry.getKey();
    ArrayList<Integer> value = entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)

甚至更简单,使用Java 8:

Map<Double, ArrayList<Integer>> mapResult = db.detectRoute(latD, longD);
mapResult.forEach((distance, value) -> {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

另请阅读什么是原始类型,为什么我们不应该使用它?