不废话,直接上代码,关键地方有注释。
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;