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后,直接上代码了!

<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>

运行效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是 js模仿java的Map集合详解 的全部内容, 来源链接: utcz.com/z/325636.html

回到顶部