`

keySet()与entrySet()

    博客分类:
  • JAVA
阅读更多
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

/**
 * 测试keySet()与entrySet()的迭代时间
 * keySet():迭代后只能通过get()取key
 * entrySet():迭代后可以e.getKey(),e.getValue()取key和value。返回的是Entry接口
 * 最后说明下keySet()的速度比entrySet()慢了很多。看来以后要考虑用entrySet()了
 * @author YL
 * @date 2009.6.10
 */
public class HashMapTest 	
{
	public static void main(String[] args) 
	{
		HashMap<String,String> kmap = new HashMap<String,String>();
		HashMap<String, String> emap = new HashMap<String, String>();
		
		//装数据
		for (int i = 0; i < 1000; i++) 
		{
			kmap.put(""+i, "YL");
		}
		for (int i = 0; i < 1000; i++) 
		{
			emap.put(""+i, "ZT");
		}
		
		long stimes = System.currentTimeMillis();
		long ctimes = Calendar.getInstance().getTimeInMillis();
		long dtimes = new Date().getTime();
		
		//初始时间 这里我用了三种取值方式 最后发现System.currentTimeMillis();是最直接的取值方法
		System.out.println(stimes+"	"+ctimes+"	"+dtimes);
		
		Iterator<String> ktor = kmap.keySet().iterator();
		while(ktor.hasNext())
		{
			System.out.println(ktor.next());
		}
		
		long stimes1 = System.currentTimeMillis();
		long ctimes1 = Calendar.getInstance().getTimeInMillis();
		long dtimes1 = new Date().getTime();
		
		//结束世界并且也是entrySet的开始时间
		System.out.println((stimes1-stimes)+"	"+(ctimes1-ctimes)+"	"+(dtimes1-dtimes));
		System.out.println(stimes1+"	"+ctimes1+"	"+dtimes1);
		
		Iterator<Entry<String, String>> itor = emap.entrySet().iterator();
		while(itor.hasNext())
		{
			Entry<String, String> e = itor.next();
			//System.out.println(e.getKey());
			System.out.println(e.getValue());
		}
		
		long stimes2 = System.currentTimeMillis();
		long ctimes2 = Calendar.getInstance().getTimeInMillis();
		long dtimes2 = new Date().getTime();
		System.out.println(stimes2+"	"+ctimes2+"	"+dtimes2);
		System.out.println((stimes2-stimes1)+"	"+(ctimes2-ctimes1)+"	"+(dtimes2-dtimes1));
	}
}


分享到:
评论
4 楼 durong11 2013-10-11  
不错~ 值得学习
3 楼 Evilover3 2013-05-07  
谢谢分享,学习了
2 楼 BuN_Ny 2013-01-11  
Y???????????
1 楼 ruijie19871128 2010-09-26  
总结的不错。。以后我也只有entitySet了。

相关推荐

    集合嵌套集合并用迭代器输出,有关keySet()和entrySet()的练习

    与`keySet()`相比,`entrySet()`提供了更全面的访问Map内容的方式,因为一次操作就能同时访问键和值。 在集合的嵌套合并中,我们可能需要将多个Map或其他集合类型的对象合并成一个大的集合。例如,如果我们有两个...

    Java Map遍历方式的选择

    然而,如果Map实现得足够优化,keySet的性能可能会与entrySet相当,甚至在某些情况下优于entrySet。 遍历key或value时,关键在于是否需要同时访问键和值。如果只需要遍历键或值,values方法和keySet的性能可能会...

    java map集合

    Map接口定义了许多方法,如put()用于添加键值对,get()用于根据键查找对应的值,remove()用于删除键值对,size()返回Map中元素的数量,keySet()和values()分别返回键集和值集,entrySet()返回所有键值对的集合。...

    数据结构与算法1

    Map是存储键值对的数据结构,提供了keySet()和entrySet()两个方法来遍历其内容。 1. Map对象中的keySet()和entrySet()的区别在于它们返回的集合类型以及遍历方式。keySet()返回一个只包含键(Key)的Set集合,集合...

    如何得到hashmap的索引

    根据提供的内容,我们可以了解到遍历`HashMap`主要有两种方式:使用`keySet()`方法和使用`entrySet()`方法。 1. **使用keySet()方法** ```java Map map = new HashMap(); Iterator iter = map.keySet()....

    JAVA遍历map的几种实现方法代码

    - 对于TreeMap,由于其内部实现基于红黑树,查询value的开销较大,所以推荐使用entrySet进行遍历,它的性能远超keySet。 总结来说,选择遍历Map的方法应根据实际需求来决定: - 只遍历键:使用`keySet()`。 - 只...

    HashMap遍历

    与`keySet()`不同的是,`entrySet()`允许我们同时访问键和值,而无需额外的`get()`操作。这在性能上通常更优,尤其是在频繁访问键值对的场景下。下面是一个使用`entrySet()`遍历`HashMap`的示例: ```java Map, ...

    JAVA遍历Map所有元素.doc

    JAVA遍历Map所有元素 ...我们可以使用entrySet()方法或keySet()方法来实现遍历,但是entrySet()方法的效率远远高于keySet()方法。因此,在实际开发中,我们应该尽量使用entrySet()方法来遍历Map中的所有元素。

    JAVA笔试题目下载

    - **Map**:HashMap、TreeMap、WeakHashMap等的区别与使用,以及KeySet、EntrySet和Values的使用。 - **泛型**:理解泛型的作用,掌握通配符的使用。 3. **多线程**: - **线程的创建**:通过Thread类和Runnable...

    java遍历Map对象的说有数据

    我们将重点讨论通过`entrySet()`方法和`keySet()`方法来实现遍历的过程。 #### 方法一:使用`entrySet()` `entrySet()`方法返回一个包含映射中的所有映射关系的`Set`视图。这使得我们可以迭代整个映射,同时访问每...

    Java集合Collection、List、Set、Map使用详解

    - 对于Map,可以对keySet或entrySet进行排序,然后通过key或entry进行操作。 总结,Java集合框架提供了多种数据结构,以适应不同的需求。理解并熟练运用这些集合,可以帮助我们编写出更高效、更易于维护的代码。在...

    另一种遍历Map的方式

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

    java中Map的两种遍历方法

    本文将详细探讨在Java中遍历`Map`的两种常用方法:通过`keySet()`方法和通过`entrySet()`方法。 ### 一、通过`keySet()`方法遍历`Map` #### 方法概述 `keySet()`方法返回一个包含`Map`中所有键的`Set`视图。通过...

    Map集合的遍历.md

    1. **步骤1**:通过`keySet()`或`entrySet()`方法获取键的集合或键值对的集合。 2. **步骤2**:使用增强for循环遍历集合。 3. **步骤3**:通过循环中的元素获取键和值,并打印出键值对。 #### 四、总结 本文介绍了...

    【精美排版】JAVA基础测验题.docx

    5. Map集合:Map集合存储键值对,不能直接使用Iterator迭代,而是通过keySet或entrySet进行遍历。使用put方法添加元素,removeAll用于删除集合中的元素。 6. 访问控制符:`private`修饰的成员变量只能被同一类的...

    java遍历大容量map的正确方法.pdf

    这种方式与第二种相似,也是遍历entrySet,但使用了Java 5引入的foreach循环,使得代码更加简洁。 ```java for (Map.Entry, String&gt; entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + ...

    java Map 遍历方法

    与遍历`entrySet()`类似,也可以使用增强型for循环遍历`keySet()`。 ```java for (String key : emails.keySet()) { System.out.println("email-" + key + ":" + emails.get(key)); } ``` #### 二、遍历Map...

    java遍历特例

    2. **使用`entrySet()`与增强for循环** - 这种方法利用了JDK 1.5中的新特性。 ```java for (Map.Entry, String&gt; m : emails.entrySet()) { logger.info("email-" + m.getKey() + ":" + m.getValue()); } ``` ...

Global site tag (gtag.js) - Google Analytics