六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 48|回复: 0

js版的HashMap

[复制链接]

升级  94%

11

主题

11

主题

11

主题

童生

Rank: 1

积分
47
 楼主| 发表于 2013-1-29 08:58:43 | 显示全部楼层 |阅读模式
var Class = {create : function() {return function() {this.initialize.apply(this, arguments);};}};var Extend = function(desc, src) {for (var property in src) {desc[property] = src[property];}return desc;};var Base = function(){};Base.prototype.extend = function(obj) {return Extend.apply(this, [this, obj]);};var Map = Class.create();Map.prototype = (new Base()).extend({initialize : function() {this.length = 0;this.maxLength = Number.MAX_VALUE;this.container = {};},put : function (objName,objValue){try{if(this.length >= this.maxLength)throw new Error("[Error HashMap] : Map Datas' count overflow !");if(objValue && objName && objName != ""){this.container[objName] = objValue;this.length ++ ;}}catch(e){return e;}},get : function(objName){try{if(this.container[objName])return this.container[objName];}catch(e){return e;}},size : function(){return this.length;},remove : function(objName){try{if(this.container[objName]){delete this.container[objName];this.length -- ;}}catch(e){return e;}}});var HashMap = Class.create();HashMap.prototype = (new Map()).extend({constructor:HashMap,keySet : function(){var arrKeySet = new Array();var index = 0;for(var strKey in this.container){arrKeySet[index++] = strKey;}return arrKeySet.length == 0 ? null : arrKeySet;},pop : function(objName){try{var ov = this.container[objName];if(ov){delete this.container[objName];this.length -- ;return ov;}return null;}catch(e){return e;}},isEmpty : function(){if(this.length === 0)return true;elsereturn false;},runIn : function(fun){try{if(!fun)throw new Error("[Error HashMap] : The paramer is null !");for(var p in this.container){var ov = this.container[p];fun(ov);}}catch(e){return e;}},values : function() {var arrValues = new Array();var index = 0;for(var strKey in this.container){arrValues[index++] = this.container[strKey];}return arrValues.length == 0 ? null : arrValues;},contains :  function(objValue){try{for(var p in this.container){if(this.container[p] === objValue)return true;}return false;}catch(e){return e;}},removeAll : function(){this.clear();},clear : function(){try{delete this.container;this.container = {};this.length = 0;}catch(e){return e;}},putAll : function(map){if(map == null)return;if(map.constructor != HashMap)return;var arrKey = map.keySet();var arrValue = map.values();for(var i in arrKey)   this.put(arrKey[i],arrValue[i]);}});
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表