科帮网

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Map遍历速度最优解
总共48087条微博

动态微博

查看: 6162|回复: 15

Map遍历速度最优解

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

跳转到指定楼层
楼主
发表于 2014-04-22 20:05:51 |只看该作者 |倒序浏览
第一种:
  Map map = new HashMap();
  Iterator iter = map.entrySet(erator();
  while (iter.hasNext()) {
  Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey();
  Object val = entry.getValue();
  }
  效率高,以后一定要使用此种方式!
  第二种:
  Map map = new HashMap();
  Iterator iter = map.keySet(erator();
  while (iter.hasNext()) {
  Object key = iter.next();
  Object val = map.get(key);
  }
  效率低,以后尽量少使用!
  HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:
  public class HashMapTest {
  public static void main(String[] args) ...{
  HashMap hashmap = new HashMap();
  for (int i = 0; i < 1000; i ) ...{
  hashmap.put("" i, "thanks");
  }
  long bs = Calendar.getInstance().getTimeInMillis();
  Iterator iterator = hashmap.keySet(erator();
  while (iterator.hasNext()) ...{
  System.out.print(hashmap.get(iterator.next()));
  }
  System.out.println();
  System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
  listHashMap();
  }
  public static void listHashMap() ...{
  java.util.HashMap hashmap = new java.util.HashMap();
  for (int i = 0; i < 1000; i ) ...{
  hashmap.put("" i, "thanks");
  }
  long bs = Calendar.getInstance().getTimeInMillis();
  java.util.Iterator it = hashmap.entrySet(erator();
  while (it.hasNext()) ...{
  java.util.Map.Entry entry = (java.util.Map.Entry) it.next();
  // entry.getKey() 返回与此项对应的键
  // entry.getValue() 返回与此项对应的值
  System.out.print(entry.getValue());
  }
  System.out.println();
  System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
  }
  }
  对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
  注:Hashtable的遍历方法和以上的差不多!
; T3 E* K# L" i! Y" d* T$ ~8 S

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

0

主题

0

听众

8

金钱

一袋弟子

该用户从未签到

沙发
发表于 2014-04-26 21:59:20 |只看该作者
for(String key:map.keySet()){
6 n  w6 k' b6 v3 O     object value = map.get(key);
+ G: ^1 c. d3 p2 \9 I/ X, h# x}
4 E9 d+ c, c4 v2 f" g
回复

使用道具 举报

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

板凳
发表于 2014-04-26 22:02:36 |只看该作者
zh_喵_ 发表于 2014-4-26 13:59& R  ~, N/ @+ M. _
for(String key:map.keySet()){
/ y2 B9 l% }. S1 ^2 z8 Z& f0 A     object value = map.get(key);
  P3 a, D' S& W% G7 f}

$ T3 ?6 {+ k2 j0 q; |8 o4 j: t0 JMap map = new HashMap();& G2 C) d, }( p' }) @
  Iterator iter = map.keySet(erator();
, m) z+ w/ t/ b7 S  while (iter.hasNext()) {- M* ~; m2 m% J4 Z+ w! k8 O
  Object key = iter.next();
/ m) r$ X! x- s9 S, M  Object val = map.get(key);8 e1 P# h4 V6 Y( L0 i6 y
  }
0 N6 T5 W' S1 G+ t迭代 key
回复

使用道具 举报

0

主题

0

听众

8

金钱

一袋弟子

该用户从未签到

地板
发表于 2014-04-26 22:03:54 |只看该作者
汪星人 发表于 2014-4-26 22:02
, O! q2 V+ P% V* f/ q8 FMap map = new HashMap();
* p1 k, _$ i$ w$ ~# M0 v  Iterator iter = map.keySet(erator();
9 a# c) ?, Z% Y2 H; I% i0 v4 m8 ^  while (iter.hasNext()) {
5 |' \1 j$ O2 s# a0 E
有啥区别呢
回复

使用道具 举报

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

5#
发表于 2014-04-26 22:05:59 |只看该作者
zh_喵_ 发表于 2014-4-26 14:03
0 l6 l0 C6 ?! O# p' ?3 p+ u有啥区别呢
$ {7 y& n. v* S( r+ i4 |" ^
说实在的开发了web好久了 很少用到map 其中的原理 没大研究
回复

使用道具 举报

0

主题

0

听众

8

金钱

一袋弟子

该用户从未签到

6#
发表于 2014-04-26 22:10:12 |只看该作者
汪星人 发表于 2014-4-26 22:050 z$ R$ E( E$ i) v7 a2 Q$ }0 J* I; s
说实在的开发了web好久了 很少用到map 其中的原理 没大研究

4 q! e5 {3 F6 b! Y( u; f3 C/ G额,我是来看我的源码在哪的....  http://tieba.baidu.com/p/2928845835
回复

使用道具 举报

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

7#
发表于 2014-04-26 22:12:54 |只看该作者
zh_喵_ 发表于 2014-4-26 14:10& P, p2 S$ i6 [% ^
额,我是来看我的源码在哪的....  http://tieba.baidu.com/p/2928845835
* |0 j' u2 I7 J& w! m, K5 s
工具 还不错大体看了看 基本的功能都可以实现、挺不错的、我们公司就有一个文件转换平台、可以支持很多功能。
回复

使用道具 举报

0

主题

0

听众

8

金钱

一袋弟子

该用户从未签到

8#
发表于 2014-04-26 22:16:22 |只看该作者
汪星人 发表于 2014-4-26 22:128 |0 L: |4 c3 X8 N3 u+ e3 K  K' B4 Z
工具 还不错大体看了看 基本的功能都可以实现、挺不错的、我们公司就有一个文件转换平台、可以支持很多功 ...

. f9 T# a* s, i8 F大公司 就是不一样。表示小公司,啥都得自己写
回复

使用道具 举报

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

9#
发表于 2014-04-26 22:21:51 |只看该作者
zh_喵_ 发表于 2014-4-26 14:16
2 o/ B' A2 W% o大公司 就是不一样。表示小公司,啥都得自己写

& L7 b% C6 E/ n8 L# ^/ v+ T非也 非也 都是小公司、只是我来的时候 人家都写好了
回复

使用道具 举报

0

主题

0

听众

8

金钱

一袋弟子

该用户从未签到

10#
发表于 2014-04-26 22:23:19 |只看该作者
汪星人 发表于 2014-4-26 22:21
- L! v' f2 c- R' ^3 z* F非也 非也 都是小公司、只是我来的时候 人家都写好了
9 X7 d: o$ B1 M% o/ i# V* m
我会说公司现在有的代码,基本都是我一个人写的么.....
回复

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表