Hashmap

package com.deu.demo;

 

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;

/** 

 * 测试keySet()entrySet()的迭代时间 

 * keySet():迭代后只能通过get()key 

 * entrySet():迭代后可以e.getKey()e.getValue()keyvalue。返回的是Entry接口 

 * 最后说明下keySet()的速度比entrySet()慢了很多。看来以后要考虑用entrySet() 

 */

public class MyHashMap {

    public static void main(String[] args) {

      

       Map<String,Object> kmap=new HashMap<String,Object>();

       Map<String,Object> emap=new HashMap<String,Object>();

       Map<String,Object> map=new HashMap<String,Object>();

   

//     for(int i=0;i<1000;i++){  

//              kmap.put(""+i, "YL");  

//          } 

//     for (int i = 0; i < 1000; i++)    {  

//              emap.put(""+i, "ZT");  

//          }  

//    

//   

//     Iterator ktor=kmap.keySet().iterator();

//     while(ktor.hasNext()){

//         System.out.println(ktor.next());

//     }

//    

//    long stimes = System.currentTimeMillis();  

//      long ctimes = Calendar.getInstance().getTimeInMillis();  

//      long dtimes = new Date().getTime();  

//    //初始时间 这里我用了三种取值方式 最后发现System.currentTimeMillis();是最直接的取值方法  

//      System.out.println(stimes+" "+ctimes+"  "+dtimes);  

    1286526669250 1286526669265  1286526669265

//     

//      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);  

      15   0    0

      1286526669265    1286526669265 1286526669265

//     

//         Iterator<Entry<String, Object>> etor= emap.entrySet().iterator();

//         while(etor.hasNext()){

//            Entry ent=etor.next();

//            System.out.println(ent.getKey()+" "+ent.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));  

         1286526669281    1286526669281 1286526669281

         16  16   16

//        

      

//     keySetentrySet慢吗?

//     keySet第一次遍历获得所有key, 快些

//     entrySet第一次遍历获得所有keyvalue,慢些

//     iterator之后,keySetnext()key; entrySetnext()Map.Entry(包含了keyvalue)

//     改变代码之后的测试表明,entrySetgetValue()Mapget()确实快

//     不过要按key排序的话,似乎keySet更方便一些。

        

         map.put("a", "1");

         map.put("b", "2");

         map.put("c", "3");

         map.put("d", "4");

         map.put("e", "5");

         Iterator iter=map.keySet().iterator();

         while(iter.hasNext()){

         String key=(String)iter.next();

         System.out.println(key+" "+map.get(key));//key and value

         }

        

//     对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value

//     entryset只是遍历了第一次,他把keyvalue都放到了entry中,所以就快了。

 

         Iterator eiter=map.entrySet().iterator();

         while(eiter.hasNext()){

        Entry ent=(Entry)eiter.next();

        System.out.println("key=="+ent.getKey()+" "+"value=="+ent.getValue());

         }

    }

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值