js模仿java的Map集合詳解
java.util 中的集合類包含 Java 中某些最常用的類。最常用的集合類是 List 和 Map。List 的具體實(shí)現(xiàn)包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構(gòu)建、存儲(chǔ)和操作任何類型對(duì)象元素列表。List 適用于按數(shù)值索引訪問(wèn)元素的情形。
Map 提供了一個(gè)更通用的元素存儲(chǔ)方法。Map 集合類用于存儲(chǔ)元素對(duì)(稱作“鍵”和“值”),其中每個(gè)鍵映射到一個(gè)值。從概念上而言,您可以將 List 看作是具有數(shù)值鍵的 Map。而實(shí)際上,除了 List 和 Map 都在定義 java.util 中外,兩者并沒(méi)有直接的聯(lián)系。本文將著重介紹核心 Java 發(fā)行套件中附帶的 Map,同時(shí)還將介紹如何采用或?qū)崿F(xiàn)更適用于您應(yīng)用程序特定數(shù)據(jù)的專用 Map。
了解完java中的Map后,直接上代碼了!
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>測(cè)試map</title>
</head>
<style type="text/css">
</style>
<script type="text/javascript">
/*
* Map對(duì)象,實(shí)現(xiàn)Map功能
* size() 獲取Map元素個(gè)數(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元素個(gè)數(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;
};
}
//測(cè)試map
alert('測(cè)試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+'對(duì)應(yīng)的value值為'+map.get(i));
}
alert('獲取map中不存在的鍵'+map.get('獲取map中不存在的鍵'));
alert('map中的所有鍵的長(zhǎng)度'+map.keys().length);
for(var i=0;i<map.keys().lenght;i++){
alert('map中的鍵值'+map.keys()[i]);
}
alert('map中的所有的value值的長(zhǎng)度'+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>
測(cè)試map
</body>
</html>
運(yùn)行效果圖:

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

