JavaScript 模仿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>
本文由用戶 cmn6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!