Javascript’s HashSet Implementation using Hash Map

  • 时间:2020-10-11 15:17:18
  • 分类:网络文摘
  • 阅读:101 次

Design a HashSet without using any built-in hash table libraries.

To be specific, your design should include these functions:

add(value): Insert a value into the HashSet.
contains(value) : Return whether the value exists in the HashSet or not.
remove(value): Remove a value in the HashSet. If the value does not exist in the HashSet, do nothing.

Example:

1
2
3
4
5
6
7
8
9
MyHashSet hashSet = new MyHashSet();
hashSet.add(1);         
hashSet.add(2);         
hashSet.contains(1);    // returns true
hashSet.contains(3);    // returns false (not found)
hashSet.add(2);          
hashSet.contains(2);    // returns true
hashSet.remove(2);          
hashSet.contains(2);    // returns false (already removed)
MyHashSet hashSet = new MyHashSet();
hashSet.add(1);         
hashSet.add(2);         
hashSet.contains(1);    // returns true
hashSet.contains(3);    // returns false (not found)
hashSet.add(2);          
hashSet.contains(2);    // returns true
hashSet.remove(2);          
hashSet.contains(2);    // returns false (already removed)

Javascript’s Set

The ECMAScript (ECMA-262) has provided a Set class (Hash Set). The Set is easy to use in Javascript. The following are some examples:

1
2
3
4
5
6
let data = new Set();
data.add(1);
data.add(2);
data.delete(2);
data.has(2); // false;
data.size; // 1
let data = new Set();
data.add(1);
data.add(2);
data.delete(2);
data.has(2); // false;
data.size; // 1

Using Javascript’s Hash Map to Implement the Hash Set

As a matter of fact, we can use the inbuilt support of the hash map {} object in Javascript to implement a Hash Set.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
 * Initialize your data structure here.
 */
var MyHashSet = function() {
    this.data = {};
};
 
/** 
 * @param {number} key
 * @return {void}
 */
MyHashSet.prototype.add = function(key) {
    this.data[key] = true;
};
 
/** 
 * @param {number} key
 * @return {void}
 */
MyHashSet.prototype.remove = function(key) {
    delete this.data[key];
};
 
/**
 * Returns true if this set contains the specified element 
 * @param {number} key
 * @return {boolean}
 */
MyHashSet.prototype.contains = function(key) {
    return typeof this.data[key] !== "undefined";
};
 
/** 
 * Your MyHashSet object will be instantiated and called as such:
 * var obj = new MyHashSet()
 * obj.add(key)
 * obj.remove(key)
 * var param_3 = obj.contains(key)
 */
/**
 * Initialize your data structure here.
 */
var MyHashSet = function() {
    this.data = {};
};

/** 
 * @param {number} key
 * @return {void}
 */
MyHashSet.prototype.add = function(key) {
    this.data[key] = true;
};

/** 
 * @param {number} key
 * @return {void}
 */
MyHashSet.prototype.remove = function(key) {
    delete this.data[key];
};

/**
 * Returns true if this set contains the specified element 
 * @param {number} key
 * @return {boolean}
 */
MyHashSet.prototype.contains = function(key) {
    return typeof this.data[key] !== "undefined";
};

/** 
 * Your MyHashSet object will be instantiated and called as such:
 * var obj = new MyHashSet()
 * obj.add(key)
 * obj.remove(key)
 * var param_3 = obj.contains(key)
 */

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
Important SEO Tips for E-commerce That You Cannot Disregard  5 Effective Ways to Improve Blog Conversion Rate  7 Reasons Blogging is Essential for Law Firms  Should Your Blog Extend Into Multimedia Forms of Content?  How Small Companies Can Use Big Data  Hands Up and Step Slowly Away from the Keyboard: Why Good Execut  How to Improve Bad Blog Posts  5 Things That Bloggers Use in Their Craft  How To Increase Your Ecommerce Sales Using Social Media  Keyword Rank Tracking: What Newbie Bloggers Need to Know 
评论列表
添加评论