js模仿java的Map集合详解


Posted in Javascript onJanuary 06, 2016

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>

运行效果图:

js模仿java的Map集合详解

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

Javascript 相关文章推荐
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 Javascript
一些老手都不一定知道的JavaScript技巧
May 06 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
纯javascript代码实现计算器功能(三种方法)
Sep 07 Javascript
BootStrap实现轮播图效果(收藏)
Dec 30 Javascript
JavaScript拖动层Div代码
Mar 01 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
Jun 21 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
May 03 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
ES6的循环与可迭代对象示例详解
Jan 31 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
Jan 06 #Javascript
JavaScript iframe数据共享接口实现方法
Jan 06 #Javascript
js实现仿qq消息的弹出窗效果
Jan 06 #Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
Jan 06 #Javascript
详解jQuery Mobile自定义标签
Jan 06 #Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 #Javascript
JavaScript类型系统之基本数据类型与包装类型
Jan 06 #Javascript
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
php rsa加密解密使用详解
2015/01/14 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
解析Python中while true的使用
2015/10/13 Python
numpy排序与集合运算用法示例
2017/12/15 Python
python如何使用unittest测试接口
2018/04/04 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
校园活动策划方案
2014/06/13 职场文书
生活小常识广播稿
2014/09/16 职场文书
2015年林业工作总结
2015/05/14 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers