我的日常

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

动态微博

查看: 5704|回复: 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的遍历方法和以上的差不多!

. t" v$ v  T5 N, f. ?% S

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


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

1

主题

0

听众

164

金钱

三袋弟子

该用户从未签到

16#
发表于 2018-02-19 17:55:45 |只看该作者
学习,谢谢$ R/ O- J% u! d: B- x$ n$ o) J# B
回复

使用道具 举报

18

主题

0

听众

2680

金钱

七袋长老

该用户从未签到

15#
发表于 2017-08-14 23:31:04 |只看该作者
不错不错
! i. Q1 h- U( d" J3 e$ J1 u# H% H
回复

使用道具 举报

5

主题

0

听众

316

金钱

四袋长老

该用户从未签到

14#
发表于 2017-08-14 08:31:37 |只看该作者
不错不错不错
回复

使用道具 举报

5

主题

0

听众

316

金钱

四袋长老

该用户从未签到

13#
发表于 2017-08-12 20:44:19 |只看该作者
不错不错不错不错
回复

使用道具 举报

woniu 实名认证   

2

主题

0

听众

330

金钱

四袋长老

该用户从未签到

12#
发表于 2016-04-12 12:19:05 |只看该作者
这个项目太棒勒!下下来学习下!
回复

使用道具 举报

1

主题

3

听众

341

金钱

四袋长老

该用户从未签到

11#
发表于 2016-03-17 21:55:24 |只看该作者
* M' e3 R0 D5 W, |" M9 F
学习一下。谢谢
回复

使用道具 举报

0

主题

0

听众

8

金钱

一袋弟子

该用户从未签到

10#
发表于 2014-04-26 22:23:19 |只看该作者
汪星人 发表于 2014-4-26 22:21% r) {2 w& S+ q$ y
非也 非也 都是小公司、只是我来的时候 人家都写好了
0 n; w& W( d: R1 Y. D7 o& X0 x
我会说公司现在有的代码,基本都是我一个人写的么.....
回复

使用道具 举报

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

9#
发表于 2014-04-26 22:21:51 |只看该作者
zh_喵_ 发表于 2014-4-26 14:16
6 G" k. R' S/ f7 B% h大公司 就是不一样。表示小公司,啥都得自己写

5 B2 S, D% L3 M5 A非也 非也 都是小公司、只是我来的时候 人家都写好了
回复

使用道具 举报

0

主题

0

听众

8

金钱

一袋弟子

该用户从未签到

8#
发表于 2014-04-26 22:16:22 |只看该作者
汪星人 发表于 2014-4-26 22:12, T" u" D3 X5 m- a' e4 }4 K! s
工具 还不错大体看了看 基本的功能都可以实现、挺不错的、我们公司就有一个文件转换平台、可以支持很多功 ...

- Q' [) E" o! `% f, q& [5 w; m大公司 就是不一样。表示小公司,啥都得自己写
回复

使用道具 举报

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

   

关闭

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

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