我想在Map<Integer, Map<Integer,Float>>
上操作。
这是我初始化的方式:
Map<Integer, Map<Integer,Float>> map = new TreeMap<>();
for(int i=0; i<100; i++)
map.put(i, new TreeMap<>());
但null
我总是得到entrySet
。
当我尝试添加元素时
map.get(i).put(j.getKey(), d);
其中i
和j
是Map.Entry<Integer, Point3f>
,它什么都不做。 (Point3f
是库vecmath
)
修改:我将其更改为HashMap
,但现在我获得NullPointerException
。
答案 0 :(得分:1)
说实话,我不确定为什么entrySet()
似乎正在为你返回null
,但是地图初始化对我来说似乎很有用,看起来对我很好。
问题出在map.get(i).put(j.getKey(), d);
,您提到的i
和j
类型。您将map
声明为Map<Integer, Map<Integer, Float>>
,这意味着map
具有Integer
个密钥和Map<Integer, Float>
值。因此,当您使用get(i)
键i
来呼叫Map.Entry<Integer, Point3f>
时,map
无法找到与该特定键对应的条目,因此会返回null
。当您尝试在地图上调用NullPointerException
时,您会得到一个put
。
答案 1 :(得分:0)
Map<Integer, Map<Integer,Float>> map = new TreeMap<Integer, Map<Integer,Float>>();
Map<Integer,Float> f = map.get(5);
f.put(4,5.6f);