| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
yg3n
10年前发布

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>