首页 > 解决方案 > 如何在不抛出 nullPointerException 的情况下为四叉树实现 get() 方法?

问题描述

我正在尝试为家庭作业拼凑一个四叉树,在功能上类似于二叉树,然后我开始实现 get() 方法,如果值存在则返回键的值,否则返回 null . 但是,对于我给定的测试用例,我不断收到 nullPointerException,我似乎无法弄清楚原因。任何和所有的帮助表示赞赏。

这是我的 get() 方法:

public V get(Coord<X,Y> key) throws IllegalArgumentException {
    checkKey(key);
    Position<Entry<Coord<X, Y>, V>> p = treeSearch(tree.root(), key);
    if(tree.isExternal(p)) { return null; }
    return p.getElement().getValue();
  }

现在,我的作业文件说这应该与这个 get 方法几乎相同(也在作业文件中):

public V get(K key) throws IllegalArgumentException {
    checkKey(key);                          // may throw IllegalArgumentException
    Position<Entry<K,V>> p = treeSearch(root(), key);
    rebalanceAccess(p);                     // hook for balanced tree subclasses
    if (isExternal(p)) return null;         // unsuccessful search
    return p.getElement().getValue();       // match found
  }

类型有一些例外。

在测试用例中,它使用随机整数作为条目的值创建一个临时树,这些:

assertEquals(null, m.get(new Coord<>(0,2)));
assertEquals(null, m.get(new Coord<>(-6,-5)));
assertEquals((int)3, (int)m.get(new Coord<>(-5,-6)));
assertEquals((int)6, (int)m.get(new Coord<>(7,7)));
assertEquals((int)0, (int)m.get(new Coord<>(0,0)));

将始终为我的 get() 方法返回 nullPointerException,而如果在示例中使用,它将返回键的值。

标签: javanullpointerexceptiontreemapquadtree

解决方案


推荐阅读