手机
当前位置:查字典教程网 >编程开发 >Java >java hashtable实现代码
java hashtable实现代码
摘要:复制代码代码如下:publicclassHashTable{privateString[]name;//关键字privateintsum;/...

复制代码 代码如下:

public class HashTable{

private String[] name; //关键字

private int sum; //容量

public static void main(String[] args){ //测试

HashTable ht = new HashTable();

ht.add("chenhaitao");

ht.add("zhongcheng");

ht.add("baiyudong");

ht.add("huangshiyao");

ht.add("djflkd");

ht.add("gg");

System.out.println(ht.contains("baiyudong"));

ht.remove("huangshiyao");

System.out.println(ht.contains("huangshiyao"));

ht.print();

}

public HashTable(){ //初始化,初始容量是10个

name = new String[10];

sum = 0;

}

public int hash1(String s){ //哈希函数

return Math.abs(s.hashCode())%name.length;

}

public int hash2(String s){ //处理冲突的哈希函数

int result = Math.abs(s.hashCode())%(name.length-1);

System.out.println(s+"--"+result);

if(result%2==0){

return result + 1;

}

return result;

}

public boolean contains(String s){ //哈希表里面是否包含字符串s

int start = hash1(s);

int i = start;

while (name[i] != null){

if(name[i].equals(s)){

return true;

}

i = (i + hash2(s))%name.length;

if(i == start){

return false;

}

}

return false;

}

public void add(String s){

if(sum>=name.length/2){

this.rehash();

}

int start = hash1(s);

int i = start;

while(name[i] != null){

if(s.equals(name[i])){

return;

}

i = (i + hash2(s))%name.length;

if(i == start){

return;

}

}

name[i] = s;

sum ++;

}

public void rehash(){ //扩建一个哈希表为原表的两倍,把原来的哈希表添加到新表中

HashTable ht = new HashTable();

ht.name = new String[this.name.length * 2];

for(int i = 0; i < this.name.length; i ++){

if((this.name[i] != null)){

ht.add(this.name[i]);

}

}

this.name = ht.name;

this.sum = ht.sum;

}

public void remove(String s){ //删除某个元素

if(this.contains(s)){

int i = this.getValue(s);

this.name[i] = null;

}

}

public int getValue(String s){ //得到s在哈希表中的位置

int start = this.hash1(s);

int i = start;

while(this.name[i] != null){

if(this.name[i].equals(s)){

return i;

}

i = (i + this.hash2(s))%this.name.length;

if(i == start){

return -1;

}

}

return -1;

}

public void print(){ //输出哈希表中所有元素

for(int i = 0; i < name.length; i ++){

System.out.println(i+":"+name[i]);

}

}

public int size(){ //哈希表存储元素的个数

return this.sum;

}

public int length(){ //哈希表的长度

return this.name.length;

}

}

【java hashtable实现代码】相关文章:

java el简介及用法

Java Annotation(Java 注解)的实现代码

java时间戳转日期格式的实现代码

java 实现约瑟夫环的实例代码

java 读取excel内容具体代码

java list去重操作实现方式

java Hibernate延迟加载

java json 省市级联实例代码

java 图片验证码的实现代码

java 自动生成略缩图示例代码

精品推荐
分类导航