前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js模仿java的Map集合,实现功能

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

作者头像
业余草
发布2019-01-21 16:05:36
2.6K0
发布2019-01-21 16:05:36
举报
文章被收录于专栏:业余草业余草

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年03月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档