我目前正在编写一个哈希表,但是当我测试它时。它给了我错误java.lang.ArithmeticException / by zero。这是我的代码:
private int hash(String key)
{
int hashIdx = 0;
int size = m_hashTable.length;
for (int i = 0; i < m_hashTable.length; i++)
{
hashIdx += key.charAt(i);
}
return hashIdx % maxSize;
}
返回导致了问题。
import java.util.*;
public class DSAHashTable
{
private DSAHashEntry[] m_hashTable;
private int maxSize, size;
//contructor
public DSAHashTable()
{
this.maxSize = maxSize;
m_hashTable = new DSAHashEntry[maxSize];
for (int i = 0; i < m_hashTable.length; i++)
{
m_hashTable[i] = null;
}
}
//Adds new element
public void put(String key, Object value)
{
int tmp = hash(key);
int i = tmp;
do
{
if (m_hashTable[i] == null)
{
m_hashTable[i].setKey(key);
m_hashTable[i].setValue(value);
size++;
return;
}
else if (m_hashTable[i].equals(key))
{
m_hashTable[i].setValue(value);
return;
}
i = (i + 1) % maxSize;
}while (i != tmp);
}
public Object get(String key)
{
int i = hash(key);
while (m_hashTable[i] != null)
{
if (m_hashTable[i].equals(key))
{
return m_hashTable[i].getValue();
}
i = (i + 1) % maxSize;
}
return null;
}
public void remove(String key)
{
int i = hash(key);
while (!key.equals(m_hashTable[i].getKey()))
{
i = (i + 1) % maxSize;
}
芜湖不芜
慕桂英546537
当年话下
随时随地看视频慕课网APP
相关分类