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

HashMap遍历

阅读更多
Map虽然实现了Collection接口,但是并不能直接遍历。如果想遍历Map,需要使用entrySet

view plaincopy to clipboardprint?
/**  
*Entry: java.util.Entry  
*hashmap类型为HashMap  
*/  
for(Iterator iter=hashmap.entrySet().iterator(); iter.hasNext();){   
    Entry entry = (Entry)iter.next();   
    entry.getKey();     //返回与此项对应的键   
    entry.getValue();   //返回与此项对应的值   
}  
/**
*Entry: java.util.Entry
*hashmap类型为HashMap
*/
for(Iterator iter=hashmap.entrySet().iterator(); iter.hasNext();){
 Entry entry = (Entry)iter.next();
 entry.getKey();  //返回与此项对应的键
 entry.getValue(); //返回与此项对应的值
}

另外一种方式是使用keySet进行遍历,看别人的文章和程序运行结果来看,似乎要慢一些。因为对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。

而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。

首选应该是上面的方法。

view plaincopy to clipboardprint?
import java.util.HashMap;   
import java.util.Iterator;   
import java.util.Calendar;   
  
public class HashMapTest {   
  
public static void main(String[] args) {   
HashMap hashmap = new HashMap();   
for(int i=0;i<1000;i++){   
hashmap.put(""+i,"hello");   
}   
  
long bs = Calendar.getInstance().getTimeInMillis();   
Iterator iterator = hashmap.keySet().iterator();   
//String value = "";   
while(iterator.hasNext()) {   
//value = hashmap.get(iterator.next());   
System.out.println(hashmap.get(iterator.next()));   
}   
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,"hello");   
}   
long bs = Calendar.getInstance().getTimeInMillis();   
//Set set = hashmap.entrySet() ;   
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.println(entry.getValue());   
}   
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);   
}   
  
}  
import java.util.HashMap;
import java.util.Iterator;
import java.util.Calendar;

public class HashMapTest {

public static void main(String[] args) {
HashMap hashmap = new HashMap();
for(int i=0;i<1000;i++){
hashmap.put(""+i,"hello");
}

long bs = Calendar.getInstance().getTimeInMillis();
Iterator iterator = hashmap.keySet().iterator();
//String value = "";
while(iterator.hasNext()) {
//value = hashmap.get(iterator.next());
System.out.println(hashmap.get(iterator.next()));
}
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,"hello");
}
long bs = Calendar.getInstance().getTimeInMillis();
//Set set = hashmap.entrySet() ;
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.println(entry.getValue());
}
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
}

}

 
HashSet hs;
  Iterator it = hs.iterator();
  Object obj = null;
  while(it.hasNext())
  {
  obj = it.next();
  }





二.遍历HashSet

Set set = new HashSet();

  for(int i=0;i<100;i++)
  {
   set .add("123");
  }

for(Iterator it=set.iterator();it.hasNext();)
  {
   System.out.println(it.next());
  }

三.遍历Hashtable(同步、线程安全的)

Hashtable table = new Hashtable();
  table.put(1, "1");
  table.put(2, "1");
  table.put(3, "1");
  //遍历key
  Enumeration e = table.keys();

  while( e. hasMoreElements() ){

  System.out.println( e.nextElement() );

  }
  //遍历value
  e = table.elements();

  while( e. hasMoreElements() ){

  System.out.println( e.nextElement() );

  }

 




分享到:
评论

相关推荐

    基于HashMap遍历和使用方法(详解)

    HashMap遍历和使用方法详解 HashMap是Java中一种常用的数据结构,用于存储键值对的集合。它实现了Map接口,是基于哈希表结构的,可以快速地存储和检索数据。本文将详细介绍HashMap的遍历和使用方法,并比较HashMap...

    Java 实例 - HashMap遍历源代码-详细教程.zip

    5. **HashMap遍历注意事项**: - 遍历HashMap时修改HashMap(添加、删除元素)可能会导致`ConcurrentModificationException`,因为迭代器无法检测到这种并发修改。 - 使用`keySet()`遍历并删除元素是安全的,但...

    1.HashSet和HashMap遍历.md

    自己写的例子,关于HashSet遍历和HashMap遍历的. 感谢大家参考

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

    Java HashMap 遍历和删除元素方法小结 Java HashMap 是一种常用的数据结构,用于存储键值对儿,但是在遍历和删除元素时,需要注意一些特殊的情况,否则可能会出现异常或错误。本文将介绍 Java HashMap 遍历和删除...

    FLEX HashMap遍历并取到需要的值

    标题中提到的"FLEX HashMap遍历并取到需要的值",是指在编程中如何使用Java语言的HashMap集合类型进行遍历,并且从中取得符合特定条件的数据值。HashMap是一种基于哈希表的Map接口实现,它允许我们存储键值对,其中...

    HashMap和List遍历方法及如何遍历删除元素总结

    要解决HashMap遍历删除元素的问题,可以使用Iterator来遍历HashMap,并使用Iterator的remove方法来删除元素。这样可以避免ConcurrentModificationException异常。 小结 在遍历和删除HashMap和List的元素时,需要...

    Java5种遍历HashMap数据的写法

    Java5种遍历HashMap数据的写法 Java语言中,HashMap是一种常用的数据结构,用于存储键值对形式的数据。然而,在实际开发中,我们经常需要遍历HashMap中的数据以实现某些功能。下面将介绍五种遍历HashMap数据的写法...

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

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

    java遍历HashMap简单的方法

    HashMap遍历的常用方法主要有三种:迭代器(Iterator)遍历、键集(KeySet)遍历以及 Entry 集(entrySet)遍历。下面将逐一介绍这些方法。 1. 迭代器遍历: HashMap提供了迭代器接口(Iterator),可以通过调用`...

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

    返回的是一个包含HashMap中所有值的集合,遍历此集合可以获取所有值。优点:如果关注的是值而非键,可以直接遍历值集。缺点:无法直接获取键,如果需要键,则需要额外的查找操作。 HashMap的遍历方式各有特点,选择...

    Hashmap实现了Map接口的底层实现.docx

    遍历HashMap有多种方式。第一种是通过entrySet()迭代器,可以同时获取键值对;第二种是通过keySet()迭代器,需要再次通过get()获取值;第三种是使用Java 8引入的forEach()方法,通过Lambda表达式简洁地遍历。其中,...

    hashMap和hashTable的区别

    ### hashMap和hashTable的区别 #### 一、简介与基本概念 `HashMap` 和 `HashTable` 都是 Java 集合框架中非常重要的数据结构,它们都实现了 `Map` 接口,用于存储键值对。尽管它们在功能上有很多相似之处,但在...

    阿里面试题总结

    - HashMap遍历方式及其应用场景 - ArrayList与LinkedList的区别及适用场景 - Java访问修饰符的使用 - final关键字的含义及其应用场景 - Ajax的工作原理及其核心对象 - Spring框架中的事务管理配置方法 - ...

    Java 集合框架+集合实例

    - **HashMap遍历**:通过迭代器遍历HashMap中的键值对。 - **集合长度**:获取集合中元素的数量。 - **集合遍历**:使用迭代器或for-each循环遍历集合中的元素。 - **集合输出**:将集合内容打印到控制台。 - *...

    Java手写简易版HashMap的使用(存储+查找)

    HashMap遍历Node数组,直到找到对应的键值对。如果找到,则更新对应的值,否则将键值对存储到Node数组中。 3. 存储键值对 HashMap将键值对存储到Node数组中。每个Node对象都包含三个字段:hash、key和value。hash...

    java哈希遍历_哈希遍历_

    在Java编程中,哈希遍历(Hash Traversal)通常是指对哈希表或映射数据结构(如HashMap)中的键值对进行访问的过程。哈希表是一种高效的数据存储方式,它通过计算对象的哈希码来快速定位数据,使得查找、插入和删除...

    JAVA面试题_华为答案.doc

    - HashMap遍历顺序与插入顺序可能不同,而Hashtable的顺序是固定的。 6. **抽象类与接口**: - **抽象类**:可以包含抽象方法和非抽象方法,可以有实例变量,可以被继承。 - **接口**:只能包含抽象方法和常量,...

    怎样遍历一个HashMap?

    可以通过2种方法遍历HashMap &lt;br&gt;Map map = new HashMap(); &lt;br&gt;for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { &lt;br&gt; Map.Entry entry = (Map.Entry) iter.next(); &lt;br&gt; Object ...

    一线互联网企业面试题.pdf

    24. HashMap遍历的三种方式。 25. JVM命令的使用。 26. ConcurrentHashmap的锁机制及其性能考量。 27. MySQL存储引擎MyISAM和InnoDB的区别。 28. Memcache与Redis的对比。 29. MySQL的行级锁和性能优化方法。 30. ...

Global site tag (gtag.js) - Google Analytics