HashMap代码(这种实现方式是错误的,错误原因:代码中_map、_length变量是HashMap的所有实例共用的):
/** * HashMap * 2021年09月09日 */ (function (global) { var _map; _length; global.HashMap = () { _map = {}; _length = 0; }; global.HashMap.prototype = { put: (key,value) { if (!_map.hasOwnProperty(key)) { _length++; } _map[key] = value; },get: (key) { if (_map.hasOwnProperty(key)) { return _map[key]; } return null; },containsKey: _map.hasOwnProperty(key); },size: () { _length; },remove: (_map.hasOwnProperty(key)) { _length--; deletefalse () { _map = {}; },keys: var keys = []; for (var item in _map) { keys.push(item); } keys; },values: var values = _map) { values.push(_map[item]); } values; } }; global.HashMap.prototype.constructor = global.HashMap; })(window);
HashMap代码(正确的实现):
HashMap = () { this._length = 0; this._map = {}; }; HashMap.prototype = { put: this._map.hasOwnProperty(key)) { this._length++; } this._map[key] = value; },1)"> (key) { if (._map[key]; } ; },1)">._map.hasOwnProperty(key); },1)"> () { ._length; },1)">this._length--; delete ; {}; },1)"> []; in ._map) { keys.push(item); } keys; },1)">._map) { values.push(._map[item]); } values; } }; HashMap.prototype.constructor = HashMap;
测试代码:
<!DOCTYPE html> <htmlhead> title>HashMap测试</> meta charset="utf-8" /> http-equiv="X-UA-Compatible" content="IE=edge"name="viewport"="width=device-width,initial-scale=1"style type="text/css"stylescript ="text/javascript" src="jquery-1.7.1.js"></script="hashmap.js"> bodyinput ="button" value="测试1" onclick="testHashMap()" ="测试2"="testArray()" div id="div" style="height:800px;"div="text/javascript"> var n = 100000; div = $("#div); //测试数据 debugger list []; map new HashMap(); for ( i 1; i <= n; i++) { val Math.floor(Math.random() * n); key key" + val; if!map.containsKey(key)) { map.put(key,val); list.push({ key: key,value: val }); } } div.append(测试数据初始化完成,数据量:Array list.length + ,HashMap map.size() <br />测试HashMap function testHashMap() { t1 Date().getTime(); sum 0; count 20000<= 21000; i) { i; (map.containsKey(key)) { num map.get(key); count; sum += num; } } t2 Date().getTime(); div.append(完成,结果:sum=,count=耗时 (t2 - t1).toString() 毫秒<br />); } 测试Array testArray() { k ; k < list.length; k) { i; item list[k]; (item.key == key) { count; sum item.value; } } } ); } >
原文地址:https://www.cnblogs.com/s0611163
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。