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));
}
}
分享到:
相关推荐
与`keySet()`相比,`entrySet()`提供了更全面的访问Map内容的方式,因为一次操作就能同时访问键和值。 在集合的嵌套合并中,我们可能需要将多个Map或其他集合类型的对象合并成一个大的集合。例如,如果我们有两个...
然而,如果Map实现得足够优化,keySet的性能可能会与entrySet相当,甚至在某些情况下优于entrySet。 遍历key或value时,关键在于是否需要同时访问键和值。如果只需要遍历键或值,values方法和keySet的性能可能会...
Map接口定义了许多方法,如put()用于添加键值对,get()用于根据键查找对应的值,remove()用于删除键值对,size()返回Map中元素的数量,keySet()和values()分别返回键集和值集,entrySet()返回所有键值对的集合。...
Map是存储键值对的数据结构,提供了keySet()和entrySet()两个方法来遍历其内容。 1. Map对象中的keySet()和entrySet()的区别在于它们返回的集合类型以及遍历方式。keySet()返回一个只包含键(Key)的Set集合,集合...
根据提供的内容,我们可以了解到遍历`HashMap`主要有两种方式:使用`keySet()`方法和使用`entrySet()`方法。 1. **使用keySet()方法** ```java Map map = new HashMap(); Iterator iter = map.keySet()....
- 对于TreeMap,由于其内部实现基于红黑树,查询value的开销较大,所以推荐使用entrySet进行遍历,它的性能远超keySet。 总结来说,选择遍历Map的方法应根据实际需求来决定: - 只遍历键:使用`keySet()`。 - 只...
与`keySet()`不同的是,`entrySet()`允许我们同时访问键和值,而无需额外的`get()`操作。这在性能上通常更优,尤其是在频繁访问键值对的场景下。下面是一个使用`entrySet()`遍历`HashMap`的示例: ```java Map, ...
JAVA遍历Map所有元素 ...我们可以使用entrySet()方法或keySet()方法来实现遍历,但是entrySet()方法的效率远远高于keySet()方法。因此,在实际开发中,我们应该尽量使用entrySet()方法来遍历Map中的所有元素。
- **Map**:HashMap、TreeMap、WeakHashMap等的区别与使用,以及KeySet、EntrySet和Values的使用。 - **泛型**:理解泛型的作用,掌握通配符的使用。 3. **多线程**: - **线程的创建**:通过Thread类和Runnable...
我们将重点讨论通过`entrySet()`方法和`keySet()`方法来实现遍历的过程。 #### 方法一:使用`entrySet()` `entrySet()`方法返回一个包含映射中的所有映射关系的`Set`视图。这使得我们可以迭代整个映射,同时访问每...
- 对于Map,可以对keySet或entrySet进行排序,然后通过key或entry进行操作。 总结,Java集合框架提供了多种数据结构,以适应不同的需求。理解并熟练运用这些集合,可以帮助我们编写出更高效、更易于维护的代码。在...
今天,我们来讨论一种遍历Map的方式,即使用Map.Entry和Map.entrySet()。 Map.Entry是什么? ---------------- Map.Entry是一个接口,表示一个映射项,里面有Key和Value。它有两个方法:getKey()和getValue(),...
本文将详细探讨在Java中遍历`Map`的两种常用方法:通过`keySet()`方法和通过`entrySet()`方法。 ### 一、通过`keySet()`方法遍历`Map` #### 方法概述 `keySet()`方法返回一个包含`Map`中所有键的`Set`视图。通过...
1. **步骤1**:通过`keySet()`或`entrySet()`方法获取键的集合或键值对的集合。 2. **步骤2**:使用增强for循环遍历集合。 3. **步骤3**:通过循环中的元素获取键和值,并打印出键值对。 #### 四、总结 本文介绍了...
5. Map集合:Map集合存储键值对,不能直接使用Iterator迭代,而是通过keySet或entrySet进行遍历。使用put方法添加元素,removeAll用于删除集合中的元素。 6. 访问控制符:`private`修饰的成员变量只能被同一类的...
这种方式与第二种相似,也是遍历entrySet,但使用了Java 5引入的foreach循环,使得代码更加简洁。 ```java for (Map.Entry, String> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + ...
与遍历`entrySet()`类似,也可以使用增强型for循环遍历`keySet()`。 ```java for (String key : emails.keySet()) { System.out.println("email-" + key + ":" + emails.get(key)); } ``` #### 二、遍历Map...
2. **使用`entrySet()`与增强for循环** - 这种方法利用了JDK 1.5中的新特性。 ```java for (Map.Entry, String> m : emails.entrySet()) { logger.info("email-" + m.getKey() + ":" + m.getValue()); } ``` ...