如果我直接从地图中使用列表,则每个循环都不会按预期工作

时间:2017-02-23 07:07:16

标签: java foreach linked-list

LinkedHashMap<Integer,LinkedList> myMap = new LinkedHashMap<Integer,LinkedList>();

for(Map.Entry<Integer,LinkedList> entry : myMap.entrySet()){

    /*Does Not Work- Incompatible Object Type */               
    for(Integer temp : entry.getValue()){
         arr[i] = temp;
         i++;
    }

    /* Works Fine */
    LinkedList<Integer> templist = entry.getValue();
    for(Integer temp : templist ){
         arr[i] = temp;
         i++;
    }
 }

1 个答案:

答案 0 :(得分:0)

LinkedHashMap的值是原始类型 - LinkedList。将其更改为通用类型 - LinkedList<Integer>

LinkedHashMap<Integer,LinkedList<Integer>> myMap = new LinkedHashMap<>();
for(Map.Entry<Integer,LinkedList<Integer>> entry : myMap.entrySet()) {            
    for(Integer temp : entry.getValue()) {
        arr[i] = temp;
        i++;
    }
}

这样编译器知道entry.getValue()LinkedList<Integer>,因此迭代LinkedList必须返回Integer而不是Object。< / p>