同樣的是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...