java - 如何在不抛出 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,而如果在示例中使用,它将返回键的值。
解决方案
推荐阅读
- arrays - 多选下拉列表和表单字段显示为数组?
- html - 在图像尺寸上使用 rem、em 和 px
- ios - 带有状态栏的错误位置 UIScrollView 内容
- vue.js - 具有可选值道具的组件
- node.js - 如何使用节点、createPresignedPost 和 fetch 将图像文件直接从客户端上传到 AWS S3
- c# - 在 Xamarin.iOS 中使用 C# 在带有核心图形的 UIView 中绘制“框架”时出现问题
- atlassian-sourcetree - SourceTree 认为开发分支是一个特性
- java - 如何根据关键字将解析的 JSON 消息的内容存储到字符串变量中?
- javascript - 通过输入 onBlur 停止搜索
- python - 如何确定哪条曲线最接近给定的一组点?