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í)有所幫助。
- Java使用entrySet方法獲取Map集合中的元素
- Java8中利用stream對map集合進(jìn)行過濾的方法
- Java實(shí)現(xiàn)過濾掉map集合中key或value為空的值示例
- Java實(shí)現(xiàn)Map集合遍歷的四種常見方式與用法分析
- 利用java讀取web項(xiàng)目中json文件為map集合方法示例
- java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼
- Java實(shí)現(xiàn)Map集合二級聯(lián)動示例
- java如何對map進(jìn)行排序詳解(map集合的使用)
- Java中Map集合(接口)的基本方法程序演示
相關(guān)文章
javascript寫的異步加載js文件函數(shù)(支持?jǐn)?shù)組傳參)
這篇文章主要介紹了javascript寫的異步加載js文件函數(shù),同時支持單個文件和多個文件(數(shù)組傳參),但不兼容IE6,需要的朋友可以參考下2014-06-06基于bootstrap寫的一點(diǎn)localStorage本地儲存
這篇文章主要介紹了基于bootstrap寫的一點(diǎn)localStorage本地儲存,需要的朋友可以參考下2017-11-11layUI使用layer.open,在content打開數(shù)據(jù)表格,獲取值并返回的方法
今天小編就為大家分享一篇layUI使用layer.open,在content打開數(shù)據(jù)表格,獲取值并返回的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09js print打印網(wǎng)頁指定區(qū)域內(nèi)容的簡單實(shí)例
下面小編就為大家?guī)硪黄猨s print打印網(wǎng)頁指定區(qū)域內(nèi)容的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11原生JS實(shí)現(xiàn)京東查看商品點(diǎn)擊放大
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)京東查看商品點(diǎn)擊放大,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12高性能WEB開發(fā) flush讓頁面分塊,逐步呈現(xiàn) flush讓頁面分塊,逐步呈現(xiàn)
在處理比較耗時的請求的時候,我們總希望先讓用戶先看到部分內(nèi)容,讓用戶知道系統(tǒng)正在進(jìn)行處理,而不是無響應(yīng)。2010-06-06