看了网上一些文章,都说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()`这两个重要的集合接口方法,它们在处理Map容器时尤其关键。 `keySet()`方法返回一个Set视图,包含了Map中的所有键。这个Set不允许有重复的键,并且对它的修改会反映到原始...
Map接口定义了许多方法,如put()用于添加键值对,get()用于根据键查找对应的值,remove()用于删除键值对,size()返回Map中元素的数量,keySet()和values()分别返回键集和值集,entrySet()返回所有键值对的集合。...
首先,我们来看看entrySet和keySet的主要区别。entrySet返回的是Map中的所有键值对,而keySet仅返回所有的键。当通过keySet遍历时,需要对每个键调用`map.get(key)`来获取对应的值,这确实会产生额外的查找操作。但...
- entrySet、keySet、values:分别返回键值对集合、键的集合和值的集合。 - clear:清空Map。 - equals和hashCode:用于比较两个Map是否相等和计算Map的哈希值。 5. SortedMap接口主要方法 - sortedMap接口扩展...
是的matlab代码在事件中锻炼。 数据结构 在本练习中,我们使用Java API提供的List , Set和Map数据结构。 此外,已经实现了ueb05.CorpusReader类,它提供了一个静态方法...keySet和values提供Collections 。 可以使用C
1. Map对象中的keySet()和entrySet()的区别在于它们返回的集合类型以及遍历方式。keySet()返回一个只包含键(Key)的Set集合,集合中的元素无序。而entrySet()返回的是一个包含键值对(Map.Entry)的Set集合,每个...
根据提供的内容,我们可以了解到遍历`HashMap`主要有两种方式:使用`keySet()`方法和使用`entrySet()`方法。 1. **使用keySet()方法** ```java Map map = new HashMap(); Iterator iter = map.keySet()....
本文将深入探讨`HashMap`的遍历方法,包括`keySet()`和`entrySet()`两种主要方式,并通过代码示例对比它们的性能差异。 #### 方法一:使用`keySet()`遍历 `keySet()`方法返回`HashMap`中的所有键的集合视图。通过...
今天,我们来讨论一种遍历Map的方式,即使用Map.Entry和Map.entrySet()。 Map.Entry是什么? ---------------- Map.Entry是一个接口,表示一个映射项,里面有Key和Value。它有两个方法:getKey()和getValue(),...
在上述的`HashMapTest`类中,通过对比`keySet()`和`entrySet()`遍历HashMap的时间,我们可以看到`entrySet()`方法通常比`keySet()`方法更快。`keySet()`需要两次遍历:一次是转换为迭代器,另一次是从HashMap中根据...
我们将重点讨论通过`entrySet()`方法和`keySet()`方法来实现遍历的过程。 #### 方法一:使用`entrySet()` `entrySet()`方法返回一个包含映射中的所有映射关系的`Set`视图。这使得我们可以迭代整个映射,同时访问每...
由测试结果可以看出,for each entrySet和for iterator entrySet的性能几乎相同,而for each keySet的性能较差。这是因为for each keySet需要再次调用get方法来获取值,增加了时间复杂度。 遍历方式结果分析 由...
本文将详细探讨在Java中遍历`Map`的两种常用方法:通过`keySet()`方法和通过`entrySet()`方法。 ### 一、通过`keySet()`方法遍历`Map` #### 方法概述 `keySet()`方法返回一个包含`Map`中所有键的`Set`视图。通过...
1. **通过Map.keySet遍历key和value** 这种方法是最直观的,直接获取Map的keySet并进行迭代。代码简洁,但存在效率问题。在遍历过程中,每次获取value都需要通过`map.get(key)`调用来查询,这可能导致额外的计算...
在Java编程语言中,`HashMap`是一个非常常用的数据结构,它实现了`Map`接口,用于存储...通过`entrySet()`、`keySet()`或`values()`,我们可以根据需求选择合适的迭代方式,从而高效地遍历和处理`HashMap`中的数据。
1. **步骤1**:通过`keySet()`或`entrySet()`方法获取键的集合或键值对的集合。 2. **步骤2**:使用增强for循环遍历集合。 3. **步骤3**:通过循环中的元素获取键和值,并打印出键值对。 #### 四、总结 本文介绍了...
- **entrySet()遍历**:最灵活,可以同时访问键和值,适用于需要同时处理键和值的复杂操作,但效率相对较低,因为需要创建额外的`Entry`对象。 在实际开发中,选择哪种遍历方式取决于具体的需求。如果只需要处理值...
使用`entrySet()`或`keySet()`的方式同样适用于遍历`HashMap`。 ```java HashMap, Object> hash = new HashMap(); hash.put(3, 3); hash.put(4, 4); hash.put(5, 5); hash.put(6, 6); hash.put(1, 1); ...