激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java hashtable實現代碼

java hashtable實現代碼

2019-10-16 10:22java代碼網 Java教程

這篇文章介紹了java hashtable實現代碼,有需要的朋友可以參考一下

代碼如下:


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;
 }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 史上最强炼体老祖动漫在线观看 | 一日本道久久久精品国产 | 国产青草视频在线观看视频 | 欧美日在线观看 | 爱性久久久久久久 | 7777网站| 亚洲精品 在线播放 | 综合网天天射 | 99日韩精品视频 | 毛片在线免费观看视频 | 香蕉视频破解 | 久久老司机精品视频 | 欧美性受ⅹ╳╳╳黑人a性爽 | 欧美18xxxx | 黄网站进入| 最新中文字幕免费视频 | 羞羞视频免费网站 | 国产午夜精品久久久久婷 | 天海翼四虎精品正在播放 | 久久久综 | 午夜视频在线观 | 欧美国产成人在线 | 最新影院 | 国产亚洲精品综合一区 | 欧美精品一区二区三区在线 | 久久久久久免费 | 国产欧美在线一区二区三区 | av噜噜噜噜 | 九九热在线视频观看这里只有精品 | 91精品国产日韩91久久久久久360 | 宅男噜噜噜66一区二区 | 久久久久av69精品 | 国产日韩大片 | 亚洲午夜久久久精品一区二区三区 | 高清做爰免费无遮网站挡 | 久久99精品久久久久久久久久久久 | xxx18hd18hd日本| 99精品国产小情侣高潮露脸在线 | 九九热视频这里只有精品 | 成人影片在线免费观看 | 久久精品成人影院 |