不废话,直接上代码,关键地方有注释。
package test2;
class DataItem{
private int key;
public DataItem(int data){
this.key = data;
}
public int getKey(){
return this.key;
}
}
public class HashTable {
private DataItem[] dataArray;
private int arraySize;
private static DataItem noItem;
static
{
noItem = new DataItem(-1);
}
public HashTable(int size){
if(size > 0){
arraySize = size;
dataArray = new DataItem[arraySize];
}
}
public void insertDataItem(int key){//假设hash表不满
DataItem data = new DataItem(key);
int hashCode = getHashCode(key);
while(dataArray[hashCode] != null && dataArray[hashCode] != noItem){//
++hashCode; //线性探测,会产生聚集现象
hashCode %= arraySize;
}
dataArray[hashCode] = data;
}
public void insertSecondaryDataItem(int key){
DataItem data = new DataItem(key);
int hashCode = getHashCode(key);
int stepSize,i=1;
while(dataArray[hashCode] != null && dataArray[hashCode] != noItem){//
Java实现hash表,线性探测,二次探测,再哈希法,链表法
最新推荐文章于 2024-11-02 17:18:50 发布
本文介绍如何使用Java实现哈希表,特别是采用链表法解决冲突问题。通过将每个数组元素作为链表节点,实现插入和删除操作。链表法的实现细节在文中有所阐述。

最低0.47元/天 解锁文章
418

被折叠的 条评论
为什么被折叠?



