閱讀391 返回首頁    go 技術社區[雲棲]


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後,直接上代碼了!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://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>

運行後的效果圖:

本文下載地址:https://download.csdn.net/detail/xmt1139057136/7076495


最後更新:2017-04-03 12:55:46

  上一篇:go linux下ntp時間服務器配置及客戶端注意事項
  下一篇:go 歡迎使用Performance analyzer 開源小工具!