Java multikeymap put-method

时间:2010-01-23 10:03:15

标签: java hashmap

我想在Java中实现多键映射的put和get-methods,其中两个键指向一个值。我写了像这样的put方法:

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正确地初始化为我自己的multikeymap-type的一个实例)

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

我在

处得到NullPointerException
if (mappi.containsKey(key2)) {

什么可能导致异常?在我的类MultiKeyMap中,我在构造函数中初始化multikeymap对象,所以这应该没问题。

1 个答案:

答案 0 :(得分:1)

如果不是作业,您可以使用MultiKeyMap中的Apache Commons Collections,而不是从头开始重做。

为了回答你的问题,我怀疑这个错误存在于HashMap<KeyTypeB, ValueType> mappi = outerMap.get(key1);中。如果key1在outerMap中没有值,则mappi将为空,从而导致NullPointerException