写一个js的伪HashMap,不包含hash算法,能用就行(转载)
来源:互联网 发布:域名和ip地址的关系 编辑:程序博客网 时间:2024/06/05 09:59
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()方法的对象 , 效果就完全不一样了 **/
1 0
- 写一个js的伪HashMap,不包含hash算法,能用就行(转载)
- Hashmap的hash算法
- HashMap的hash算法(解决hash冲突的方式)
- Java HashMap的hash算法
- 谁能用C语言给我写一个可以计算加减乘除的程序(只用算整数就OK)
- 不知道写啥最近在学js,就弄一个js的从零开始吧,尽量每天都坚持更新吧!
- 判断一个字符串是否包含另一个字符串(用java但是不能用index()这个函数)
- 一个好友的收藏。小洪(洪承煜),不打招呼就转载一下罗,呵呵
- [转载]ACM必备(学完一个就加亮一个)不多,就这些!
- php+apache (ScriptAlias Alias一个能用一个不能用)
- arralist 排序 网上好多的不能用 参考msn写了一个 凑和着用
- 用C写一个程序,打印出所有的源程序,要求不能用文件。
- 转载一个hashmap的讲解
- HashMap赋值的问题【注意Map不能用=赋值】
- 一致性hash算法(转载)
- 十段拿来就能用的代码(转载),收藏一下
- JS中addEventListener不能用的问题
- hash算法实现-(java-hashmap)
- 关于url传参乱码的解决方法以及文件流下载遇见的问题
- eclipse在线安装SVN
- params is error 微信朋友圈分享网页内的外链打不开
- 最少拦截系统
- 实习之前及实习时的学习计划
- 写一个js的伪HashMap,不包含hash算法,能用就行(转载)
- c3p0数据源项目启动卡死
- iOS开发工具-网络封包分析工具Charles
- 编程之法:面试和算法
- android源码编译出错(5)
- 区分PATCH与PUT、POST方法
- 打字母游戏2
- 2015年山石网科面试题
- php 和 java RSA 对称加密互通的问题