Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में हैशटेबल क्लास


यहां हैशटेबल वर्ग का पूरा कार्यान्वयन है। निश्चित रूप से अधिक कुशल डेटा संरचनाओं और टकराव समाधान एल्गोरिदम का उपयोग करके इसे बेहतर बनाया जा सकता है।

उदाहरण


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. सी # में हैशटेबल क्लास की IsReadOnly संपत्ति क्या है?

    हैशटेबल वर्ग की IsReadOnly संपत्ति का उपयोग यह इंगित करने के लिए किया जाता है कि हैशटेबल केवल पढ़ने के लिए है या नहीं। उदाहरण using System; using System.Collections; namespace Demo {    class Program {       static void Main(string[] args) {          

  1. सी # में ऑब्जेक्ट क्लास

    ऑब्जेक्ट क्लास सी # में सभी वर्गों का आधार वर्ग है। C# पर इसकी निम्नलिखित विधियाँ हैं। Sr.No विधि और विवरण 1 बराबर(वस्तु) निर्धारित करता है कि निर्दिष्ट वस्तु वर्तमान वस्तु के बराबर है या नहीं। 2 बराबर (वस्तु, वस्तु, निर्धारित करता है कि निर्दिष्ट ऑब्जेक्ट इंस्टेंस को समान माना जाता है या नही

  1. सी # में हैशटेबल क्लास की वैल्यू प्रॉपर्टी क्या है?

    Values ​​प्रॉपर्टी को एक ICollection मिलता है जिसमें हैशटेबल में मान होते हैं। हैशटेबल संग्रह घोषित करें - Hashtable ht = new Hashtable(); अब मान जोड़ें ht.Add("One", "Henry"); ht.Add("Two", "Kevin"); ht.Add("Three", "David"); हैशटेबल से