Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavascriptのHashTableクラス


これがHashTableクラスの完全な実装です。もちろん、これは、より効率的なデータ構造と衝突解決アルゴリズムを使用することで改善できます。


class HashTable {
   constructor() {
      this.container = [];
      // Populate the container with empty arrays
      // which can be used to add more elements in
      // cases of collisions
      for (let i = 0; i < 11; i++) {
         this.container.push([]);
      }
   }

   display() {
      this.container.forEach((value, index) => {
         let chain = value
         .map(({ key, value }) => `{ ${key}: ${value} }`)
         .join(" --> ");
         console.log(`${index}: ${chain}`);
      });
   }

put(key, value) {
   let hashCode = this.hash(key);

   for (let i = 0; i < this.container[hashCode].length; i++) {
      // Replace the existing value with the given key
      // if it already exists
      if (this.container[hashCode][i].key === key) {
         this.container[hashCode][i].value = value;
         return;
      }
   }

   // Push the pair at the end of the array
   this.container[hashCode].push(new this.KVPair(key, value));
}

get(key) {
   let hashCode = this.hash(key);
   for (let i = 0; i < this.container[hashCode].length; i++) {
      // Find the element in the chain
      if (this.container[hashCode][i].key === key) {
         return this.container[hashCode][i];
      }
   }
   return undefined;
}

remove(key) {
   let hashCode = this.hash(key);

   for (let i = 0; i < this.container[hashCode].length; i++) {
      // Find the element in the chain
      if (this.container[hashCode][i].key === key) {
         this.container[hashCode].splice(i, 1);
         return true;
      }
   }
   return false;
}

hash(key) {
   return key % 11;
}
forEach(callback) {
   // For each chain
   this.container.forEach(elem => {
      // For each element in each chain call callback on KV pair
      elem.forEach(({ key, value }) => callback(key, value));
      });
   }

   static join(table1, table2) {
      // Check if both args are HashTables
      if (!table1 instanceof HashTable || !table2 instanceof HashTable) {
         throw new Error("Illegal Arguments");
      }

      let combo = new HashTable();
      table1.forEach((k, v) => combo.put(k, v));
      table2.forEach((k, v) => combo.put(k, v));
      return combo;
   }
}

HashTable.prototype.KVPair = class {
   constructor(key, value) {
      this.key = key;
      this.value = value;
   }
};

  1. C#のオブジェクトクラス

    Objectクラスは、C#のすべてのクラスの基本クラスです。 C#では次のメソッドがあります。 Sr.No メソッドと説明 1 Equals(Object) 指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判別します。 2 Equals(Object、Object、 指定されたオブジェクトインスタンスが等しいと見なされるかどうかを決定します。 3 Finalize() オブジェクトがリソースを解放しようとすることを許可します 4 GetHashCode() デフォルトのハッシュ関数。 5

  2. C#のHashtableクラスのValuesプロパティとは何ですか?

    Valuesプロパティは、ハッシュテーブルの値を含むICollectionを取得します。 ハッシュテーブルコレクションを宣言する- Hashtable ht = new Hashtable(); 次に値を追加します ht.Add("One", "Henry"); ht.Add("Two", "Kevin"); ht.Add("Three", "David"); ハッシュテーブルの値を表示するためのコードは次のとおりです- 例 using System; using Sy