javascript实现java中的Map,代码是在国外的一个网站上看到的(
http:///questions/368280/javascript-hashmap-equivalent),自己稍作了修改,之前也看到过有人用2个数组实现了Map,但是我感觉效率比较低,现在这个我感觉效率还可以,自己做了下测试,代码如下:
Map.js
测试代码如下:
- var l=10000;
- var map=new Map();
- var start=new Date().getTime();
- for(var i=0;i<l;i++){
- map.put("key_"+i,new Date());
- }
- var end=new Date().getTime();
- document.write("向map中添加了 "+l+" 个Date对象..........");
- document.write("<br/>");
- document.write("耗时 "+(end-start)+" 毫秒,map的长度为:"+map.size());
- document.write("<br/>");
- document.write("在map中提取全部数据..........");
- document.write("<br/>");
- start=new Date().getTime();
- for(var i=0;i<map.size();i++){
- map.get("key_"+i).getTime();
- }
- end=new Date().getTime();
- document.write("耗时 "+(end-start)+" 毫秒");
- document.write("<br/>");
- document.write("清空map..........");
- document.write("<br/>");
- start=new Date().getTime();
- map.clear();
- end=new Date().getTime();
- document.write("耗时 "+(end-start)+" 毫秒,map的长度为:"+map.size());
- document.write("<br/>");
测试结果如下:
1.IE7
2.Firefox 3.6.8
3.谷歌浏览器5.0
方法next的使用:
- var map=new Map();
- map.put("key_1","value_1");
- map.put("key_2","value_2");
- map.put("key_3","value_3");
- var m=map.next();
- document.write("map.next:key="+m.key()+" value="+m.value());
- document.write("<br/>");
- m=map.next();
- document.write("map.next:key="+m.key()+" value="+m.value());
结果如下:
- map.next:key=key_2 value=value_2
- map.next:key=key_3 value=value_3