首页 > 编程 > JavaScript > 正文

js模仿java的Map集合详解

2019-11-20 10:51:05
字体:
来源:转载
供稿:网友

java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。
了解完java中的Map后,直接上代码了!

<head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <title>测试map</title> </head> <style type="text/css"> </style> <script type="text/javascript"> /*  * Map对象,实现Map功能  * size() 获取Map元素个数  * isEmpty() 判断Map是否为空  * clear() 删除Map所有元素  * put(key, value) 向Map中增加元素(key, value)   * remove(key) 删除指定key的元素,成功返回true,失败返回false  * get(key) 获取指定key的元素值value,失败返回null  * element(index) 获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null  * containsKey(key) 判断Map中是否含有指定key的元素  * containsValue(value) 判断Map中是否含有指定value的元素  * keys() 获取Map中所有key的数组(array)  * values() 获取Map中所有value的数组(array)  *  */ function Map(){   this.elements = new Array();     //获取Map元素个数   this.size = function() {     return this.elements.length;   },     //判断Map是否为空   this.isEmpty = function() {     return (this.elements.length < 1);   },     //删除Map所有元素   this.clear = function() {     this.elements = new Array();   },     //向Map中增加元素(key, value)    this.put = function(_key, _value) {     if (this.containsKey(_key) == true) {       if(this.containsValue(_value)){         if(this.remove(_key) == true){           this.elements.push( {             key : _key,             value : _value           });         }       }else{         this.elements.push( {           key : _key,           value : _value         });       }     } else {       this.elements.push( {         key : _key,         value : _value       });     }   },     //删除指定key的元素,成功返回true,失败返回false   this.remove = function(_key) {     var bln = false;     try {        for (i = 0; i < this.elements.length; i++) {          if (this.elements[i].key == _key){           this.elements.splice(i, 1);           return true;         }       }     }catch(e){       bln = false;      }     return bln;   },     //获取指定key的元素值value,失败返回null   this.get = function(_key) {     try{        for (i = 0; i < this.elements.length; i++) {         if (this.elements[i].key == _key) {           return this.elements[i].value;         }       }     }catch(e) {       return null;      }   },     //获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null   this.element = function(_index) {     if (_index < 0 || _index >= this.elements.length){       return null;     }     return this.elements[_index];   },     //判断Map中是否含有指定key的元素   this.containsKey = function(_key) {     var bln = false;     try {       for (i = 0; i < this.elements.length; i++) {          if (this.elements[i].key == _key){           bln = true;         }       }     }catch(e) {       bln = false;      }     return bln;   },      //判断Map中是否含有指定value的元素   this.containsValue = function(_value) {     var bln = false;     try {       for (i = 0; i < this.elements.length; i++) {          if (this.elements[i].value == _value){           bln = true;         }       }     }catch(e) {       bln = false;      }     return bln;   },     //获取Map中所有key的数组(array)   this.keys = function() {     var arr = new Array();     for (i = 0; i < this.elements.length; i++) {        arr.push(this.elements[i].key);     }     return arr;   },    //获取Map中所有value的数组(array)   this.values = function() {     var arr = new Array();     for (i = 0; i < this.elements.length; i++) {        arr.push(this.elements[i].value);     }     return arr;   }; } //测试map alert('测试map'); var map=new Map(); map.put(0,0); map.put(1,1); map.put(2,2); alert('map的大小为:'+map.size()); for(var i=0;i<map.size();i++){   alert('map的key'+i+'对应的value值为'+map.get(i)); } alert('获取map中不存在的键'+map.get('获取map中不存在的键')); alert('map中的所有键的长度'+map.keys().length); for(var i=0;i<map.keys().lenght;i++){   alert('map中的键值'+map.keys()[i]); } alert('map中的所有的value值的长度'+map.values().length); for(var i=0;i<map.values().length;i++){   alert('map中的value的值'+map.values()[i]); } alert('判断map中的值value是否存在3'+map.containsValue(3)); </script> <body> 测试map </body> </html> 

运行效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表