1 Star 0 Fork 0

16/data_structure_of_java

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
HashTable.java 1.76 KB
一键复制 编辑 原始数据 按行查看 历史
16 提交于 2018-08-29 14:50 +08:00 . 添加再哈希函数
package Hash;
public class HashTable {
private DataItem[] hashArray;
private int arraySize;
private DataItem nonItem;
public HashTable(int size) {
this.arraySize = size;
this.hashArray = new DataItem[this.arraySize];
this.nonItem = new DataItem(-1);
}
public void displayTable() {
System.out.print("Table:");
for(int j=0;j<this.arraySize;j++) {
if(this.hashArray[j] != null) {
System.out.print(this.hashArray[j].getKey()+" ");
}else {
System.out.print("*");
}
System.out.print("/");
}
}
/**
* 哈希函数 - 线性探测哈希表
* @return
*/
public int hashFunc(int key) {
return key % this.arraySize;
}
/**
* 再哈希函数
* @param key
* @return
*/
public int hashFunc2(int key) {
return 5-(key%5);
}
public void insert(int i) {
DataItem newItem = new DataItem(i);
int hashVal = this.hashFunc(i);
int stepSize = this.hashFunc2(i);
while(this.hashArray[hashVal] != null && this.hashArray[hashVal].getKey() != -1) {
hashVal += stepSize;
hashVal %= this.arraySize;
}
this.hashArray[hashVal] = newItem;
}
public DataItem delete(int key) {
int hashVal = this.hashFunc(key);
int stepSize = this.hashFunc2(key);
while(this.hashArray[hashVal] != null) {
if(this.hashArray[hashVal].getKey() == key) {
DataItem temp = this.hashArray[hashVal];
this.hashArray[hashVal] = this.nonItem;
return temp;
}
hashVal += stepSize;
hashVal %= this.arraySize;
}
return null;
}
public boolean find(int key) {
int hashVal = this.hashFunc(key);
int stepSize = this.hashFunc2(key);
while(this.hashArray[hashVal] != null) {
if(this.hashArray[hashVal].getKey() == key) {
return true;
}
hashVal += stepSize;
hashVal %= this.arraySize;
}
return false;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/code16sss/data_structure_of_java.git
git@gitee.com:code16sss/data_structure_of_java.git
code16sss
data_structure_of_java
data_structure_of_java
master

搜索帮助