我有一个 HashMap 实现为:
Map<Integer, ArrayList<Integer>> hm = new HashMap<Integer, ArrayList<Integer>>();
经过以下操作:
hm.put((Integer) 1, new ArrayList<Integer>());
hm.put((Integer) 2, new ArrayList<Integer>());
(hm.get(1)).add(2);
(hm.get(1)).add(2);
(hm.get(1)).add(3);
(hm.get(2)).add(4);
我得到我的地图:
1: [2,2,3]
2: [4]
现在,我想从键 1 中删除所有出现的 2,即,我想修改我的 HashMap 使其看起来像:
1: [3]
2: [4]
我做了以下事情:
for(List<Integer> list : (hm.get(1)))
{
list.removeAll(Collections.singleton(2));
}
但是,在编译时,会出现此错误:
error: incompatible types
for(List<Integer> list : hm.get(1))
^
required: List<Integer>
found: Integer
1 error
但是,当我运行时:
System.out.println((hm.get(1)).getClass());
我得到:
class java.util.ArrayList
据此,我认为我的代码很好(即使在应用强制转换之后,此错误也会以另一种形式出现)。
我不知道为什么会这样。我究竟做错了什么?如何解决这个问题?