我在java中创建一个哈希表,需要做一些分析。我的一个分析任务是比较散列为单个值的值的数量。
给定素数(任意决定),我用随机数填充哈希表。我生成的randoms数量等于0.8 * primeNumber。我使用单独的链接来处理哈希冲突。虽然散列表中的数组存储节点,但每个节点都可以指向另一个节点(因此它实际上是一个链接列表数组)。
我的问题是当我试图遍历存储桶(我们的数组保存节点)时,查看树中总哈希中有多少节点到单个值。因此,例如,如果我们的函数是值%prime,并且我们的素数是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值(基本上,问题是找到散列冲突的数量)。
答案 0 :(得分:0)
这是因为:
public Node getNext() { return nextNode; }
一次返回 null 。因此,当您发出 h.hasNext()并且h为null时,您将获得NullPointerException。在不改变核心逻辑的情况下,最简单的修复是空检查:
while (h != null && h.hasNext()) {