2014-05-02 96 views
0

我想在Map<Integer, Map<Integer,Float>>上操作。 這是我如何初始化:如何初始化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<>()); 

,但我總是得到nullentrySet。 當我嘗試添加元素

map.get(i).put(j.getKey(), d); 

其中ijMap.Entry<Integer, Point3f>,它什麼都不做。 (Point3f是一個對象從庫vecmath

編輯:我改成了HashMap,但現在我得到NullPointerException

回答

1

說實話,我不知道爲什麼entrySet()似乎回到null你,但似乎是爲我工作的地圖初始化,和小艾OK給我。

問題出在map.get(i).put(j.getKey(), d);,對於您指定的ij類型。您聲明mapMap<Integer, Map<Integer, Float>>,這意味着map具有Integer鍵和Map<Integer, Float>值。因此,當您撥打get(i)並且密鑰iMap.Entry<Integer, Point3f>時,map找不到對應於該特定密鑰的條目,因此它返回null。然後,當您嘗試在您認爲已獲得的地圖上撥打put時,您會收到NullPointerException

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); 
相關問題