我想在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");
我在
处得到NullPointerExceptionif (mappi.containsKey(key2)) {
什么可能导致异常?在我的类MultiKeyMap中,我在构造函数中初始化multikeymap对象,所以这应该没问题。
答案 0 :(得分:1)
如果不是作业,您可以使用MultiKeyMap中的Apache Commons Collections,而不是从头开始重做。
为了回答你的问题,我怀疑这个错误存在于HashMap<KeyTypeB, ValueType> mappi = outerMap.get(key1);
中。如果key1在outerMap
中没有值,则mappi
将为空,从而导致NullPointerException