如何在不抛出nullPointerException的情况下为四叉树实现get()方法?

时间:2019-04-25 18:19:36

标签: java nullpointerexception treemap quadtree

我正在尝试为作业分配四叉树,其功能类似于二叉树,然后开始实现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,而如果在示例中使用,它将返回键的值。

0 个答案:

没有答案