JavaScript 实现 Java 风格 Map 集合详解

作者:键盘侠

时间:2026-10-29

浏览:110

本文详细介绍如何在 JavaScript 中模拟 Java 的 Map 集合功能。通过封装对象方法,实现 put、get、remove、keys、values 等核心操作,并提供完整的测试代码与运行效果展示,帮助开发者在 JS 环境中使用类似 Java 的键值对数据结构。

文章目录

JavaScript 模拟 Java Map 集合实现

java.util 包下的集合框架涵盖了 Java 中最常用的数据结构。其中,List 和 Map 是最核心的两类。List 的具体实现如 ArrayList 和 Vector,它们支持动态大小,适合构建、存储及操作各类对象列表,尤其适用于通过数值索引访问元素的场景。Map 则提供了一种更通用的元素存储机制,用于保存键值对(Key-Value),每个键映射到一个唯一的值。从概念上看,List 可视为拥有数值键的 Map,但除同属 java.util 包外,两者并无直接关联。本文将重点介绍核心 Java 发行版中的 Map 实现,并探讨如何根据特定应用需求定制或实现专用的 Map 结构。理解 Java 中的 Map 概念后,接下来直接展示 JavaScript 的实现代码。

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> 

运行效果展示

运行效果图:

JavaScript 模拟 Java Map 集合实现

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

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章