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

keySet()与entrySet()

阅读更多
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()的练习

    与`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