js模仿java的Map集合詳解
java.util 中的集合類包含 Java 中某些最常用的類。最常用的集合類是 List 和 Map。List 的具體實(shí)現(xiàn)包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構(gòu)建、存儲和操作任何類型對象元素列表。List 適用于按數(shù)值索引訪問元素的情形。
Map 提供了一個更通用的元素存儲方法。Map 集合類用于存儲元素對(稱作“鍵”和“值”),其中每個鍵映射到一個值。從概念上而言,您可以將 List 看作是具有數(shù)值鍵的 Map。而實(shí)際上,除了 List 和 Map 都在定義 java.util 中外,兩者并沒有直接的聯(lián)系。本文將著重介紹核心 Java 發(fā)行套件中附帶的 Map,同時還將介紹如何采用或?qū)崿F(xiàn)更適用于您應(yīng)用程序特定數(shù)據(jù)的專用 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對象,實(shí)現(xiàn)Map功能
* size() 獲取Map元素個數(shù)
* 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的數(shù)組(array)
* values() 獲取Map中所有value的數(shù)組(array)
*
*/
function Map(){
this.elements = new Array();
//獲取Map元素個數(shù)
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的數(shù)組(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的數(shù)組(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+'對應(yīng)的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>
運(yùn)行效果圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
如何使用50行javaScript代碼實(shí)現(xiàn)簡單版的call,apply,bind
這篇文章主要介紹了50行javaScript代碼實(shí)現(xiàn)簡單版的call,apply,bind過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
es6 字符串String的擴(kuò)展(實(shí)例講解)
下面小編就為大家?guī)硪黄猠s6 字符串String的擴(kuò)展(實(shí)例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
JS如何將數(shù)字類型轉(zhuǎn)化為沒3個一個逗號的金錢格式
本文為大家介紹下如何將數(shù)字類型轉(zhuǎn)化為沒3個一個逗號的金錢格式,下面是具體的實(shí)現(xiàn)2014-01-01
js通過iframe加載外部網(wǎng)頁的實(shí)現(xiàn)代碼
這篇文章主要介紹了js通過iframe加載外部網(wǎng)頁的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
JavaScript 原型繼承之構(gòu)造函數(shù)繼承
JavaScript 是基于原型的面向?qū)ο笳Z言。也就是說,每個實(shí)例對象都具有一個原型。對象從該原型中繼承屬性和方法。這一篇將具體說說構(gòu)造函數(shù)的繼承。2011-08-08

