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

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

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


目录
相关文章
|
5月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
164 7
|
6月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
352 100
|
6月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
361 101
|
6月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
188 4
|
6月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
7月前
|
存储 NoSQL Java
Java Stream API:集合操作与并行处理
Stream API 是 Java 8 提供的集合处理工具,通过声明式编程简化数据操作。它支持链式调用、延迟执行和并行处理,能够高效实现过滤、转换、聚合等操作,提升代码可读性和性能。
|
7月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。
时间轮-Java实现篇
在前面的文章《[时间轮-理论篇](https://developer.aliyun.com/article/910513)》讲了时间轮的一些理论知识,然后根据理论知识。我们自己来实现一个简单的时间轮。
1141 0
|
5月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
293 1
|
5月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
313 1

热门文章

最新文章