js模仿java的Map集合,实现功能

java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。List 适用于按数值索引访问元素的情形。

Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。

了解完java中的Map后,直接上代码了!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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>

运行后的效果图:

本文下载地址:http://download.csdn.net/detail/xmt1139057136/7076495

时间: 2024-08-04 05:12:03

js模仿java的Map集合,实现功能的相关文章

js模仿java的Map集合详解_javascript技巧

java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建.存储和操作任何类型对象元素列表.List 适用于按数值索引访问元素的情形. Map 提供了一个更通用的元素存储方法.Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值.从概念上而言,您可以将 List 看作是具有数值键的 Map.而实际上,除

JavaScript实现Java的Map、List功能

JavaScript实现Java的Map.List功能,如下代码: function HashMap(){      this.size=0;      this.map=new Object();  }    HashMap.prototype.put=function(key,value){      if(!this.map[key]){          this.size++;      }      this.map[key]=value;  };  HashMap.prototyp

java的Map集合中按value值进行排序输出的实例代码_java

java的Map集合中按value值进行排序输出的实例代码 import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Test { public static void main(String[] args) { Map<String ,Integer> map = new Has

Java实现Map集合二级联动示例_java

Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省市级联选择框,当选择省份信息时,将改变城市下拉选择框对应的内容. 思路分析: 1. 创建全国(省,直辖市,自治区)映射集合,即LinkedHashMap对象,使用Map接口的put()方法向集合中添加指定的省与城市的映射关系,其中值为String型一维数组. 代码如下: CityMap.java 复制代码 代码如下: import

不同方式遍历Map集合(全)_java

今天一朋友问我有关Map集合的遍历问题,说真的当时真是懵了似懂非懂的,下面我通过查阅资料,具体内容整理如下: public static void main(String[] args){ Map<String,String> map=new HashMap<String,String>(); map.put("1","张三"); map.put("2","李四"); map.put("3&q

java 遍历MAP的几种方法示例代码_java

java中遍历MAP的几种方法 Map<String,String> map=new HashMap<String,String>(); map.put("username", "qq"); map.put("passWord", "123"); map.put("userID", "1"); map.put("email", "qq

JS自定义对象实现Java中Map对象功能的方法

这篇文章主要介绍了JS自定义对象实现Java中Map对象功能的方法,可实现类似Java中Map对象增删改查等功能,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS自定义对象实现Java中Map对象功能的方法.分享给大家供大家参考.具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象. 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容! 这里Key

JS自定义对象实现Java中Map对象功能的方法_javascript技巧

本文实例讲述了JS自定义对象实现Java中Map对象功能的方法.分享给大家供大家参考.具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象. 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容!   这里Key,你要使用String类型,和Java一样,你可以进行一些增加,删除,修改,获得的操作. 使用很简单,我先把工具类给大家看下: 复制代码 代码如下: /**  *

java xml报文解析,把name名相同的解析成一个数组存到map集合

问题描述 java xml报文解析,把name名相同的解析成一个数组存到map集合 <?xml version="1.0" encoding="GBK"?> <request version="1.0"> <query> <filed name="FundOID" type="String"></filed> <filed name=&quo