如何初始化Map <integer,map <integer,=“”float =“”>&gt;?</integer,>

时间:2014-05-02 16:49:15

标签: java map set

我想在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);

其中ijMap.Entry<Integer, Point3f>,它什么都不做。 (Point3f是库vecmath

中的对象

修改:我将其更改为HashMap,但现在我获得NullPointerException

2 个答案:

答案 0 :(得分:1)

说实话,我不确定为什么entrySet()似乎正在为你返回null,但是地图初始化对我来说似乎很有用,看起来对我很好。

问题出在map.get(i).put(j.getKey(), d);,您提到的ij类型。您将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);