`
Tristan_S
  • 浏览: 383370 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

entrySet 和 keySet 的区别

 
阅读更多
看了网上一些文章,都说keySet比entrySet慢。 我测试下来两者区别不大。
而且用keySet更加简单
import java.util.Calendar;
import java.util.*;
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 Test {
	public static void main(String[] args) {
		Map<String, String> kmap = new TreeMap<String, String>();
		Map<String, String> emap = new TreeMap<String, String>();
		int num = 20000;
		// 装数据
		for (int i = 0; i < num; i++) {
			kmap.put("" + i, "YL");
		}
		for (int i = 0; i < num; i++) {
			emap.put("" + i, "ZT");
		}

		long stimes = System.currentTimeMillis();

		Iterator<String> ktor = kmap.keySet().iterator();
		while (ktor.hasNext()) {
			String k = ktor.next();
			String v = kmap.get(k);
			System.out.println(k + v);
		}

		long stimes1 = System.currentTimeMillis();

		Iterator<Entry<String, String>> itor = emap.entrySet().iterator();
		while (itor.hasNext()) {
			Entry<String, String> e = itor.next();
			String k = e.getKey();
			String v = e.getValue();
			System.out.println(k + v);
		}

		long stimes2 = System.currentTimeMillis();
		System.out.println("keySet: " + (stimes1 - stimes));
		System.out.println("entrySet: " + (stimes2 - stimes1));
	}
}


分享到:
评论

相关推荐

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

    我们将深入探讨`keySet()`和`entrySet()`这两个重要的集合接口方法,它们在处理Map容器时尤其关键。 `keySet()`方法返回一个Set视图,包含了Map中的所有键。这个Set不允许有重复的键,并且对它的修改会反映到原始...

    java map集合

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

    Java Map遍历方式的选择

    首先,我们来看看entrySet和keySet的主要区别。entrySet返回的是Map中的所有键值对,而keySet仅返回所有的键。当通过keySet遍历时,需要对每个键调用`map.get(key)`来获取对应的值,这确实会产生额外的查找操作。但...

    Map实现类1

    - entrySet、keySet、values:分别返回键值对集合、键的集合和值的集合。 - clear:清空Map。 - equals和hashCode:用于比较两个Map是否相等和计算Map的哈希值。 5. SortedMap接口主要方法 - sortedMap接口扩展...

    ist的matlab代码-uebung05:练习05

    是的matlab代码在事件中锻炼。 数据结构 在本练习中,我们使用Java API提供的List , Set和Map数据结构。 此外,已经实现了ueb05.CorpusReader类,它提供了一个静态方法...keySet和values提供Collections 。 可以使用C

    数据结构与算法1

    1. Map对象中的keySet()和entrySet()的区别在于它们返回的集合类型以及遍历方式。keySet()返回一个只包含键(Key)的Set集合,集合中的元素无序。而entrySet()返回的是一个包含键值对(Map.Entry)的Set集合,每个...

    如何得到hashmap的索引

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

    HashMap遍历

    本文将深入探讨`HashMap`的遍历方法,包括`keySet()`和`entrySet()`两种主要方式,并通过代码示例对比它们的性能差异。 #### 方法一:使用`keySet()`遍历 `keySet()`方法返回`HashMap`中的所有键的集合视图。通过...

    另一种遍历Map的方式

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

    JAVA遍历Map所有元素.doc

    在上述的`HashMapTest`类中,通过对比`keySet()`和`entrySet()`遍历HashMap的时间,我们可以看到`entrySet()`方法通常比`keySet()`方法更快。`keySet()`需要两次遍历:一次是转换为迭代器,另一次是从HashMap中根据...

    java遍历Map对象的说有数据

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

    Java HashMap三种循环遍历方式及其性能对比实例分析

    由测试结果可以看出,for each entrySet和for iterator entrySet的性能几乎相同,而for each keySet的性能较差。这是因为for each keySet需要再次调用get方法来获取值,增加了时间复杂度。 遍历方式结果分析 由...

    java中Map的两种遍历方法

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

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

    1. **通过Map.keySet遍历key和value** 这种方法是最直观的,直接获取Map的keySet并进行迭代。代码简洁,但存在效率问题。在遍历过程中,每次获取value都需要通过`map.get(key)`调用来查询,这可能导致额外的计算...

    hashMap利用iterator迭代器迭代元素方法

    在Java编程语言中,`HashMap`是一个非常常用的数据结构,它实现了`Map`接口,用于存储...通过`entrySet()`、`keySet()`或`values()`,我们可以根据需求选择合适的迭代方式,从而高效地遍历和处理`HashMap`中的数据。

    Map集合的遍历.md

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

    Java.Map的三种遍历方法.docx

    - **entrySet()遍历**:最灵活,可以同时访问键和值,适用于需要同时处理键和值的复杂操作,但效率相对较低,因为需要创建额外的`Entry`对象。 在实际开发中,选择哪种遍历方式取决于具体的需求。如果只需要处理值...

    java Map 遍历方法

    使用`entrySet()`或`keySet()`的方式同样适用于遍历`HashMap`。 ```java HashMap, Object&gt; hash = new HashMap(); hash.put(3, 3); hash.put(4, 4); hash.put(5, 5); hash.put(6, 6); hash.put(1, 1); ...

Global site tag (gtag.js) - Google Analytics