繼續造輪子吧JS版HashMap

2021-06-22 01:48:13 字數 1964 閱讀 8775

同樣的是hashmap的js版本,網上也有很多,我只是重複造輪子,不過,做了部分的修改優化,這個版本感覺並不是很好,特別是在自動擴容那塊效能很低啊,準備看看consistent hashing,看能不能搞定。

/**

* hashmap

* 實現了put、get、remove、containskey、containsvalue方法

* created by nick on 14-5-15.

*/(function (window) ;

/*** hashmap 物件

* @param length

* @constructor

*/var hashmap = function (length) ;

/*** hashmap原型方法

* @type }

*/hashmap.prototype =

* @private

*/_hash: function (str)

}return h;

},/**

* 獲取對應桶的座標

* @param key

* @returns

* @private

*/_indexfor: function (key) ,

/*** size超出loadfactor * length值後進行自動增加

* @private

*/_refresh: function ()

this.length = this.length * 2;

this.table = new array(length);

for (pos = 0, length = tmptable.length; pos < length; pos++)

},/**

* 判斷給定的物件是否為null或undefined

* @param obj

* @returns

* @private

*/_isblank: function (obj) ,

/*** 向hashmap中增加乙個值

* @param key

* @param value

* @returns

*/put: function (key, value) else else

}if (!found) }}

if (this.size > this.length * this.loadfactor) this._refresh();

return this;

},/**

* 獲取hashmap中指定key的值

* @param key

* @returns

*/get: function (key) else }}

}return null;

},/**

* 刪除map中指定的值

* @param key

* @returns

*/remove: function (key) else }}

}},

/*** map中是否包含有key

* @param key

* @returns

*/containskey: function (key)

while (tmp.next) }}

return false;

},/**

* map中是否包含有給定的值

* @param value

* @returns

*/containsvalue: function (value)

while (tmp.next) }}

}return false;}};

window.hashmap = hashmap;

})(window);

需要引用請用以下鏈結

等待研究更新啊,嘿嘿

造輪子之我見

味,因為自己就是那一小撮喜歡造輪子的人!自己錯了,錯在哪呢?浪費時間?那麼很快的把事做完了,再做點啥呢!自己是個人英雄主義麼。想出頭麼,想要更多的公升職,加薪 麼,想要譁眾取寵麼!困惑,苦悶,壓力,壓抑,接踵而來。今天看了篇文章 似乎不光自己由此困惑,很多人或者說很多想要做輪子或者 正在造輪子的人 ...

談談自己造輪子

寫下這篇文章,主要是對我近段時間工作的反思。對於一些程式設計師來說,喜歡自己造輪子可算是乙個很平常的事情,我想可能有如下原因 我不覺得造輪子不好,曾今很長一段時間我都認為造輪子是體現自己能力很好的一種方式,但是現在越來越覺得,不要過分的去造輪子。昨天,我需要對接amazon s3的儲存,官方沒有go...

C語言造輪子

double 數轉 uint64 t 四捨五入法 vs 中線程安全函式 sprintf sprintf s strtok strtok s gcc 中線程安全函式 strtok strtok r uint64 t doubletoull double a char p null,pp null ui...