`
xlover
  • 浏览: 244951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HashMap的两种遍历方式

 
阅读更多

第一种: 

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(); 
} 
 
效率高,以后一定要使用此种方式! 
第二种: 
Map map = new HashMap(); 
Iterator iter = map.keySet().iterator(); 
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().iterator();   
  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().iterator(); 
  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中,所以就快了。 
分享到:
评论

相关推荐

    Java HashMap 如何正确遍历并删除元素的方法小结

    Java HashMap 提供了两种遍历方法:foreach 模式和迭代器遍历。 1. foreach 模式 foreach 模式是最简单的遍历方法,适用于不需要修改 HashMap 内元素的遍历,只需要获取元素的键/值的情况。 ```java HashMap, V&gt; ...

    Java HashMap的三种遍历方法及优缺点含示例

    本文将探讨Java HashMap的三种主要遍历方式,阐述它们的优缺点,并提供示例代码。 ### HashMap数据结构简介 在深入遍历方法之前,我们先回顾一下HashMap的基本数据结构。HashMap由数组和链表(在JDK1.8之后还包括...

    HashMap遍历

    为了验证这一点,我们可以使用时间差来比较两种遍历方式的效率: ```java Map, String&gt; map = new HashMap(); for (int i = 0; i ; i++) { map.put("key" + i, "value" + i); } long startTime = System....

    java中Map的两种遍历方法

    在Java编程语言中,`Map`接口是集合框架的一个重要组成部分,它用于存储键值对。其中,`HashMap`是`Map`接口的一个实现类,...在追求代码可读性和维护性的同时,合理利用这两种遍历策略,可以使程序更加健壮和高效。

    map遍历的四种方式及性能比较

    此外,使用`Iterator`可以在遍历过程中安全地删除元素,而其他两种方式无法做到这一点。从性能上看,该方法与使用增强for循环遍历`keys`或`values`(方法二)具有相似的表现。 #### 方法四:通过键查找值遍历 这种...

    另一种遍历Map的方式

    今天,我们来讨论一种遍历Map的方式,即使用Map.Entry和Map.entrySet()。 Map.Entry是什么? ---------------- Map.Entry是一个接口,表示一个映射项,里面有Key和Value。它有两个方法:getKey()和getValue(),...

    FLEX HashMap遍历并取到需要的值

    在Java中,HashMap的遍历可以通过多种方式实现,比如使用Iterator迭代器、foreach循环等。 而提供的部分内容则是两段重复的代码示例,其核心内容如下: ```java var iterator: Iterator = actImage.toLineMap....

    使用多种方式实现遍历HashMap的方法

    遍历HashMap是常见的操作,本文将介绍六种不同的方法来实现这一功能。 1. **方式一:使用KeySet方法** KeySet方法返回HashMap中所有键的Set视图。由于Set接口实现了Iterable接口,我们可以使用for-each循环来遍历...

    Java Map遍历方式的选择

    keySet的两种遍历方式都需要额外的`get`操作,但它们的性能差异可能取决于get操作的效率。entrySet的两种方式则直接处理Entry对象,减少了查找步骤,理论上应该更快。然而,如果Map实现得足够优化,keySet的性能可能...

    JAVA遍历Map所有元素.doc

    在Java编程中,Map接口是数据结构中非常重要的一个部分,它存储键值对的数据。遍历Map的所有元素是常见的操作,特别是在处理数据或者进行...同时,理解这两种遍历方式的工作原理,可以帮助我们更好地理解和优化代码。

    如何得到hashmap的索引

    从给出的例子中可以看到,作者进行了两种遍历方法的效率测试。测试结果显示,使用`entrySet()`方法比使用`keySet()`方法更快。 ```java // 使用keySet()方法 long startTime = Calendar.getInstance()....

    在Struts标签中对数据的几种遍历

    ### 在Struts标签中对数据的几种遍历 #### 概述 在Web开发中,Struts框架作为经典的MVC架构实现之一,在处理业务逻辑、视图展示等方面提供了丰富的功能支持。其中,对于数据的遍历操作是Struts中一个非常重要的...

    HashMap总结

    HashMap 是 Java 中的一种常用的数据结构,用于存储键值对(Key-Value)数据。下面是 HashMap 的一些特性和使用方法总结。 键(Key)的特性 1. 键可以为 null:HashMap 中的键可以为 null,这意味着可以将 null ...

    java HashMap原理分析

    2. collisions处理:当两个不同的Key发生哈希碰撞时,HashMap会将它们存储在同一个链表中,在查找时,HashMap会遍历链表,找到符合条件的Entry对象。 HashMap的查询效率非常高,因为它可以通过哈希函数直接定位到...

    Java HashMap两种简便排序方法解析

    Java HashMap两种简便排序方法解析 Java HashMap是一种常用的数据结构,然而,它的储存是没有顺序的,按照key的HashCode实现。这使得在 certainsituations下的排序变得非常重要。下面,我们将介绍两种简便的排序...

    HashMap介绍和使用

    所有的复杂数据结构都可以基于这两种基本结构构建出来,HashMap也不例外。 **1.1 数组和链表结合** HashMap内部采用数组加链表(或红黑树)的形式存储数据,这种结构称为“链表散列”。数组作为主存储结构,而链表...

    遍历学期学科

    迭代器是Java集合框架提供的标准遍历方式,适用于所有实现Iterable接口的数据结构,包括HashSet。以下是一个简单的示例: ```java Set&lt;String&gt; subjects = new HashSet(); // 添加学科 subjects.add("数学"); ...

    HASHMAP排序功能描述

    有两种主要方法可以对HashMap进行排序: - **使用LinkedHashMap** LinkedHashMap是HashMap的一个子类,它维护了元素的插入顺序或者访问顺序。如果想要按照插入顺序排序,直接使用LinkedHashMap即可。如果需要按照...

    HashMap源码剖析共10页.pdf.zip

    HashMap提供了两种遍历方式:通过keySet()、entrySet()或values()返回的集合进行迭代,两种方式在并发修改时需要注意异常处理。 10. **HashMap的优化** 在实际应用中,合理设置初始容量和负载因子可以减少扩容次数...

Global site tag (gtag.js) - Google Analytics