哈希表遍历中出现空指针异常



我正在用java创建一个哈希表,需要做一些分析。我的分析任务之一是比较哈希为单个值的值的数量。

给定一个素数(任意决策),我用随机数填充哈希表。我生成的随机数等于0.8*primeNumber。我使用单独的链接来处理哈希冲突。尽管哈希表中的数组存储节点,但每个节点都可以指向另一个节点(因此它实际上是一个链表数组)。

我的问题是,当我试图遍历bucket(我们的数组包含节点),以查看树中有多少节点在总哈希值中为一个值。例如,如果我们的函数是值%素数,我们的素数是5,我们生成数字{10,5,2,7,15,4,23},那么我们将得到10,5,和15散列成单个值(0,因为5%5是0,同样对于10和15},并且2和7将散列成相同的值(5%7=2),这总共是3+2或5个散列成1个值(基本上,问题是找到散列冲突的数量)。

这是因为:

public Node getNext() { return nextNode; }

有一次返回null。因此,当您发出h.hasNext()并且h为null时,您将得到NullPointerException。在不改变核心逻辑的情况下,最简单的修复方法是空检查:

while (h != null && h.hasNext()) {

最新更新