当前位置: 首页 > news >正文

温州市建设质量监督站网站/aso优化渠道

温州市建设质量监督站网站,aso优化渠道,软件编程专业,西安做网站建设哪家好转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51669534 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的收货! 一、常用的遍历HashMap的两种方法 第一种: entrySet() Map map new …

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51669534 文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货!

一、常用的遍历HashMap的两种方法

第一种: entrySet()

Map map = new HashMap(); 
Iterator iter = map.entrySet().iterator(); 
while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); 
} 

效率高,以后一定要使用此种方式!

第二种: keySet()

Map map = new HashMap(); 
Iterator iter = map.keySet().iterator(); 
while (iter.hasNext()) { Object key = iter.next(); Object val = map.get(key); 
} 

效率低,以后尽量少使用!

二、性能比较

public class HashMapTest {  public static void main(String[] args) {  HashMap<String, String> keySetMap = new HashMap<String, String>();  HashMap<String, String> entrySetMap = new HashMap<String, String>();  for (int i = 0; i < 1000; i++) {  keySetMap.put("" + i, "keySet");  }  for (int i = 0; i < 1000; i++) {  entrySetMap.put("" + i, "entrySet");  }  long startTimeOne = System.currentTimeMillis();  Iterator<String> keySetIterator = keySetMap.keySet().iterator();  while (keySetIterator.hasNext()) {  String key = keySetIterator.next();  String value = keySetMap.get(key);  System.out.println(value);  }  System.out.println("keyset spent times:"  + (System.currentTimeMillis() - startTimeOne));  long startTimeTwo = System.currentTimeMillis();  Iterator<Entry<String, String>> entryKeyIterator = entrySetMap  .entrySet().iterator();  while (entryKeyIterator.hasNext()) {  Entry<String, String> e = entryKeyIterator.next();  System.out.println(e.getValue());  }  System.out.println("entrySet spent times:"  + (System.currentTimeMillis() - startTimeTwo));  }  
}  

测试结果:

keyset 
.
.
keyset spent times:20
entrySet
.
.
entrySet spent times:7

我的测试结果entrySet ()比keyset()效率高很多,有的测试1000组数据,可能看不到太大差异,可能和cpu性能有关。

三.原因分析:

通过查看源代码发现,调用这个方法keySetMap.keySet()会生成KeyIterator迭代器,其next方法只返回其key值.

private class KeyIterator extends HashIterator<K> {  public K next() {  return nextEntry().getKey();  }  }

调用entrySetMap.entrySet()方法会生成EntryIterator 迭代器,其next方法返回一个Entry对象的一个实例,其中包含key和value.

private class EntryIterator extends HashIterator<Map.Entry<K,V>> {  public Map.Entry<K,V> next() {  return nextEntry();  }  }

二者在此时的性能应该是相同的,但方式一再取得key所对应的value时,此时还要访问Map的这个方法,这时,方式一多遍历了一次table.

public V get(Object key) {  Object k = maskNull(key);  int hash = hash(k);  int i = indexFor(hash, table.length);  Entry<K,V> e = table[i];   while (true) {  if (e == null)  return null;  if (e.hash == hash && eq(k, e.key))   return e.value;  e = e.next;  }  }

转载:http://kim-miao.iteye.com/blog/736143
http://blog.csdn.net/xueyepiaoling/article/details/5217709

http://www.lbrq.cn/news/1041355.html

相关文章:

  • wordpress新增站点/电商网站设计模板
  • 企业营销网站怎样做/seo交流博客
  • 做类型网站/seo关键字优化教程
  • 怎么用视频做网站首页/色盲悖论
  • 做水果的网站/企业营销策划案例
  • 网站关键词收费/2022年新闻大事
  • 网站内容采编怎么做/淮南网站seo
  • wordpress 提交插件/网站推广优化教程
  • 做外贸出口衣服的网站/长尾关键词排名推广
  • 网站建设是多少钱/企业网站优化方案
  • 做网站可以不做后端吗/洛阳seo博客
  • 企业网站国内现状/厦门网站设计公司
  • 专业网站设计公司推荐/seo网站排名优化公司哪家
  • 一般的网站方案建设书模板/网络服务提供商是指
  • cms 排名 wordpress/北京seo全网营销
  • 手机网页及网站设计/今天国际新闻大事
  • java cms建站/2023年8月疫情爆发
  • 设计导航/常州网站建设优化
  • 公司网站建设报告/哪个平台可以免费发广告
  • 做资源网站有哪些/如何在百度发布文章
  • iis7添加网站/营销软文怎么写
  • 网站制作模板程序/推广方法
  • 网络网站制作过程/百度技术培训中心
  • 哪个网站可以做奖状/昆明seo网站管理
  • 可以做免费广告的网站/买卖平台
  • 玩pc赚钱网站/网络推广怎么收费
  • 网易云音乐 wordpress/湖南网站推广优化
  • 好的做网站/苏州seo安严博客
  • 网站怎么公安备案/策划公司
  • 委托建设网站账务处理/最新seo自动优化软件
  • 【狂热算法篇】探寻图论幽径之SPFA算法:图论迷宫里的闪电寻径者(通俗易懂版)
  • 【linux】企业级WEB应用服务器tomcat
  • 《 AudioClassification-Pytorch:GitHub项目网页解读》
  • 如何通过API接口实现批量获取淘宝商品数据?(官方与非官方渠道分享)
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DHCP欺骗、DHCP饿死)
  • 【经典算法】二叉树最小深度详解:递归解法与可视化分析