不废话,直接上代码,关键地方有注释。
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;
Java实现hash表,线性探测,二次探测,再哈希法,链表法
最新推荐文章于 2024-04-19 10:24:51 发布
本文介绍如何使用Java实现哈希表,特别是采用链表法解决冲突问题。通过将每个数组元素作为链表节点,实现插入和删除操作。链表法的实现细节在文中有所阐述。
摘要由CSDN通过智能技术生成