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>  

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/8833.html

(0)
上一篇 2021年7月18日 22:21
下一篇 2021年7月18日 22:21

相关推荐

发表回复

登录后才能评论