首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JavaScript中适用的HashMap对象

2012-10-11 
JavaScript中实用的HashMap对象script languagejavascript/***作者 :Fantasy*Email: fantasycs@163.c

JavaScript中实用的HashMap对象

<script language="javascript">    /**   *作者 :Fantasy   *Email: fantasycs@163.com   *QQ   : 8635335   *Blog : http://www.blogjava.net/fantasy   *版本 :V1.1    */   function HashMap()    {        /** Map 大小 **/       var size = 0;        /** 对象 **/       var entry = new Object();                /** 存 **/       this.put = function (key , value)        {            if(!this.containsKey(key))            {                size ++ ;            }            entry[key] = value;        }                /** 取 **/       this.get = function (key)        {            return this.containsKey(key) ? entry[key] : null;        }                /** 删除 **/       this.remove = function ( key )        {            if( this.containsKey(key) && ( delete entry[key] ) )            {                size --;            }        }                /** 是否包含 Key **/       this.containsKey = function ( key )        {            return (key in entry);        }                /** 是否包含 Value **/       this.containsValue = function ( value )        {            for(var prop in entry)            {                if(entry[prop] == value)                {                    return true;                }            }            return false;        }                /** 所有 Value **/       this.values = function ()        {            var values = new Array();            for(var prop in entry)            {                values.push(entry[prop]);            }            return values;        }                /** 所有 Key **/       this.keys = function ()        {            var keys = new Array();            for(var prop in entry)            {                keys.push(prop);            }            return keys;        }                /** Map Size **/       this.size = function ()        {            return size;        }                /* 清空 */       this.clear = function ()        {            size = 0;            entry = new Object();        }    }        var map = new HashMap();        /*   map.put("A","1");   map.put("B","2");   map.put("A","5");   map.put("C","3");   map.put("A","4");   */       /*   alert(map.containsKey("XX"));   alert(map.size());   alert(map.get("A"));   alert(map.get("XX"));   map.remove("A");   alert(map.size());   alert(map.get("A"));   */       /** 同时也可以把对象作为 Key **/   /*   var arrayKey = new Array("1","2","3","4");   var arrayValue = new Array("A","B","C","D");   map.put(arrayKey,arrayValue);   var value = map.get(arrayKey);   for(var i = 0 ; i < value.length ; i++)   {       //alert(value[i]);   }   */   /** 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key**/       /** 如果是自定义对象 那自己得重写 toString() 方法 否则 . 就是下面的结果 **/       function MyObject(name)    {        this.name = name;    }        /**   function MyObject(name)   {       this.name = name;              this.toString = function ()       {           return this.name;       }   }   **/   var object1 = new MyObject("小张");    var object2 = new MyObject("小名");        map.put(object1,"小张");    map.put(object2,"小名");    alert(map.get(object1));    alert(map.get(object2));    map.remove("xxxxx");    alert(map.size());        /** 运行结果 小名 小名 size = 1 **/       /** 如果改成复写toString()方法的对象 , 效果就完全不一样了 **/       </script>  

?

热点排行