[Java] HashMap遍历速度最快的解决方案 →→→→→进入此内容的聊天室

来自 , 2020-04-30, 写在 Java, 查看 114 次.
URL http://www.code666.cn/view/0e095e05
  1. java Map 遍历速度最优解
  2.  
  3. 第一种:
  4. Map map = new HashMap();
  5. Iterator iter = map.entrySet().iterator();
  6. while (iter.hasNext()) {
  7. Map.Entry entry = (Map.Entry) iter.next();
  8. Object key = entry.getKey();
  9. Object val = entry.getValue();
  10. }
  11. 效率高,以后一定要使用此种方式!
  12. 第二种:
  13. Map map = new HashMap();
  14. Iterator iter = map.keySet().iterator();
  15. while (iter.hasNext()) {
  16. Object key = iter.next();
  17. Object val = map.get(key);
  18. }
  19. 效率低,以后尽量少使用!
  20. HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:
  21. public class HashMapTest {
  22. public static void main(String[] args) ...{
  23. HashMap hashmap = new HashMap();
  24. for (int i = 0; i < 1000; i ) ...{
  25. hashmap.put("" i, "thanks");
  26. }
  27. long bs = Calendar.getInstance().getTimeInMillis();
  28. Iterator iterator = hashmap.keySet().iterator();
  29. while (iterator.hasNext()) ...{
  30. System.out.print(hashmap.get(iterator.next()));
  31. }
  32. System.out.println();
  33. System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
  34. listHashMap();
  35. }
  36. public static void listHashMap() ...{
  37. java.util.HashMap hashmap = new java.util.HashMap();
  38. for (int i = 0; i < 1000; i ) ...{
  39. hashmap.put("" i, "thanks");
  40. }
  41. long bs = Calendar.getInstance().getTimeInMillis();
  42. java.util.Iterator it = hashmap.entrySet().iterator();
  43. while (it.hasNext()) ...{
  44. java.util.Map.Entry entry = (java.util.Map.Entry) it.next();
  45. // entry.getKey() 返回与此项对应的键
  46. // entry.getValue() 返回与此项对应的值
  47. System.out.print(entry.getValue());
  48. }
  49. System.out.println();
  50. System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
  51. }
  52. }
  53. 对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
  54. :Hashtable的遍历方法和以上的差不多!
  55.  
  56. <font color="#e78608">------解决思路----------------------</font>
  57.  
  58.  <fieldset>
  59.   <legend>探讨</legend>
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  关键是我这值 不确定
  66.  
  67.  
  68.  
  69.  所以我想
  70.  
  71.  map.get(1);
  72.  
  73.  map.get(2);
  74.  
  75.  
  76.  
  77.  这样最好........
  78.  
  79.  
  80.  
  81.  
  82.  </fieldset> //源代码片段来自云代码http://yuncode.net
  83.                        

回复 "HashMap遍历速度最快的解决方案"

这儿你可以回复上面这条便签

captcha