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 相关文章推荐
jquery 子窗口操作父窗口的代码
Sep 21 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
Aug 13 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
Nov 16 Javascript
angular分页指令操作
Jan 09 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
Mar 21 Javascript
vue.js使用watch监听路由变化的方法
Jul 08 Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 Javascript
[原创]微信小程序获取网络类型的方法示例
Mar 01 Javascript
通过Kettle自定义jar包供javascript使用
Jan 29 Javascript
vuex实现购物车的增加减少移除
Jun 28 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防注入代码
2010/04/07 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
简单了解Python生成器是什么
2019/07/02 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
普天C++笔试题
2016/03/20 面试题
Python文件操作的面试题
2013/06/22 面试题
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
公职人员索取回扣检举信
2014/04/04 职场文书
大学班级文化建设方案
2014/05/06 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
委托收款证明
2015/06/23 职场文书
大学生活感想
2015/08/10 职场文书
MYSQL 表的全面总结
2021/11/11 MySQL