2010-01-23 54 views
0

我想用兩個指向值的鍵來實現Java中multikeymap的put和get-methods。我已經寫了PUT方法是這樣的:Java multikeymap put-method

public ValueType put(KeyTypeA key1, KeyTypeB key2, ValueType value) { 

HashMap<KeyTypeB, ValueType> mappi = outerMap.get(key1); 
ValueType oldvalue; 
if (mappi.containsKey(key2)) { 
    oldvalue = mappi.get(key2); 
} else { 
    oldvalue = null; 
} 

然而,當我測試此方法

mappi.put("xxxxx", 13, "xxxxx"); 

(我已經初始化mappi妥善我自己multikeymap型的實例)我得到一個空指針異常在

if (mappi.containsKey(key2)) { 

什麼可能導致異常?在我的類MultiKeyMap中,我在構造函數中初始化multikeymap對象,所以應該沒問題。

回答

1

如果不是家庭作業,您可以使用從Apache Commons Collections,而不是從頭開始重做。

要回答你的問題,我懷疑故障在於HashMap<KeyTypeB, ValueType> mappi = outerMap.get(key1);。如果key1在outerMap中沒有值,那麼mappi將爲空,導致NullPointerException

+0

是的,您是對的,謝謝! – rize 2010-01-23 10:12:13