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 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
Prototype使用指南之dom.js
Jan 10 Javascript
JQuery 学习笔记01 JQuery初接触
May 06 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
异步动态加载js与css文件的js代码
Sep 15 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
Javascript中字符串和数字的操作方法整理
Jan 22 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
Feb 06 Javascript
JQuery选中select组件被选中的值方法
Mar 08 jQuery
TypeScript 引用资源文件后提示找不到的异常处理技巧
Jul 15 Javascript
JavaScript this关键字的深入详解
Jan 14 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版本号
2006/10/09 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
JS实现分页导航效果
2020/02/19 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
Python中os.path用法分析
2015/01/15 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python单例模式实例详解
2017/03/01 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
python实现大学人员管理系统
2019/10/25 Python
详解Python多线程下的list
2020/07/03 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
单方离婚协议书范本(2014版)
2014/09/30 职场文书
安全保证书格式
2015/02/28 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript