具有2D数组的哈希表

时间:2014-12-07 01:46:16

标签: java hashtable multidimensional-array

我被要求使用2D数组创建哈希表。我做了它在我的put方法中有什么问题我的理解2D数组必须有两个循环才能实现这里是我的put代码我不能插入任何东西。

 public class Array2DHashTable<K, V> {
    // here is my variable and my constructor. 
     // Array2DHashTable(int tableSize){ table = (Entry[][]) new HashEntry[tableSize]     [COLUMN_SIZE]; 
    //numItems = 0; }

    public void put(K key, V value){
       int hash= key.hashCode() % ROW_SIZE;
        int seenIt = hash;
       int j;
      for(j=0;j<COLUMN_SIZE;j++){
        while(table[hash][j] != null && table[hash][j].getKey().equals(key)){
          hash= ( hash+1)%ROW_SIZE;
          if(hash == seenIt) return;
          }
       }
      table[hash][j] = new HashEntry(key,value);
      numItems++;
    }

}


class HashEntry<K, V>  implements Entry<K, V>  {

  // all the variables and gutter and setter 
}

1 个答案:

答案 0 :(得分:0)

如果找到相同的密钥(而不是更改哈希值),您可能希望覆盖该值。以下是执行该操作的代码。

    public void put(K key, V value){
      int hash= key.hashCode() % ROW_SIZE;
      int seenIt = hash;
      int j;
      for(j=0;j<COLUMN_SIZE;j++){
        while(table[hash][j] != null){
          if (table[hash][j].getKey().equals(key)) // overwrite the value
            hash=(hash+1)%ROW_SIZE;
        }
      }
      table[hash][j] = new HashEntry(key,value);
      numItems++;
    }