欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java hashtable實現(xiàn)代碼

 更新時間:2013年10月14日 15:09:58   作者:  
這篇文章介紹了java hashtable實現(xiàn)代碼,有需要的朋友可以參考一下
復(fù)制代碼 代碼如下:

public class HashTable{
   private String[] name;    //關(guān)鍵字
   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){                                       //哈希函數(shù)
        return Math.abs(s.hashCode())%name.length;
  }
  public int hash2(String s){                                     //處理沖突的哈希函數(shù)
      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(){          //哈希表存儲元素的個數(shù)
   return this.sum;
 }
public int length(){            //哈希表的長度
    return this.name.length;
 }
}

相關(guān)文章

  • 使用Java實現(xiàn)將ppt轉(zhuǎn)換為文本

    使用Java實現(xiàn)將ppt轉(zhuǎn)換為文本

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)將ppt轉(zhuǎn)換為文本,文中的示例代碼簡潔易懂,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-01-01
  • java適配器模式之萬物擬人化

    java適配器模式之萬物擬人化

    本文詳細介紹了什么是適配器模式,適配器模式的種類以及各種類的詳細講解等,需要學習該知識點的小伙伴可以參考這篇文章
    2021-08-08
  • 詳解在idea 中使用Mybatis Generator逆向工程生成代碼

    詳解在idea 中使用Mybatis Generator逆向工程生成代碼

    這篇文章主要介紹了在idea 中使用Mybatis Generator逆向工程生成代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • java開發(fā)flyway的方法

    java開發(fā)flyway的方法

    這篇文章主要介紹了java開發(fā)flyway的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 使用TraceId在Spring Cloud中實現(xiàn)線上問題快速定位

    使用TraceId在Spring Cloud中實現(xiàn)線上問題快速定位

    在微服務(wù)架構(gòu)中,服務(wù)間的互相調(diào)用使得問題定位變得復(fù)雜,在此背景下,TraceId為我們提供了一個在復(fù)雜環(huán)境中追蹤請求路徑和定位問題的工具,本文不僅介紹TraceId的基本概念,還將結(jié)合真實場景,為您展示如何在Spring Cloud中應(yīng)用它
    2023-09-09
  • java使用HashMap實現(xiàn)斗地主(有序版)

    java使用HashMap實現(xiàn)斗地主(有序版)

    這篇文章主要為大家詳細介紹了java使用ArrayList實現(xiàn)斗地主游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Java詳解HashMap實現(xiàn)原理和源碼分析

    Java詳解HashMap實現(xiàn)原理和源碼分析

    這篇文章主要介紹了Java關(guān)于HashMap的實現(xiàn)原理并進行源碼分析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 詳細總結(jié)Java for循環(huán)的那些坑

    詳細總結(jié)Java for循環(huán)的那些坑

    在平常寫代碼的過程中循環(huán)是不可避免的,雖然for的語法并不復(fù)雜,但是在開發(fā)中還是會遇到一些坑,雖然大部分的坑都是自己的騷操作導(dǎo)致的.今天來總結(jié)一下for循環(huán)在開發(fā)中可能遇到的坑,不要在同樣的問題上再次犯錯.需要的朋友可以參考下
    2021-05-05
  • eclipse中maven插件安裝教程

    eclipse中maven插件安裝教程

    這篇文章主要為大家詳細介紹了eclipse中maven插件安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java中Stream流對多個字段進行排序的方法

    Java中Stream流對多個字段進行排序的方法

    我們在處理數(shù)據(jù)的時候經(jīng)常會需要進行排序后再返回給前端調(diào)用,比如按照時間升序排序,前端展示數(shù)據(jù)就是按時間先后進行排序,下面這篇文章主要給大家介紹了關(guān)于Java中Stream流對多個字段進行排序的相關(guān)資料,需要的朋友可以參考下
    2023-10-10

最新評論