package  cn.yu.hashmap;

import  java.util.HashMap;
import  java.util.Iterator;
import  java.util.Map;
import  java.util.Map.Entry;

public   class  hashmap {
    
public   static   void  main(String[] args) {
        HashMap
< String, String >  map  =   new  HashMap < String, String > ();
        map.put(
" 1 " " aaa " );
        map.put(
" 2 " " bbb " );
        map.put(
" 3 " " ccc " );
        map.put(
" 4 " " ddd " );
        map.put(
" 5 " " eee " );
        map.put(
" 6 " " fff " );
        map.put(
" 7 " " ggg " );
        map.put(
" 8 " " hhh " );
        map.put(
" 9 " " iii " );

        
/*
         * 遍历hashmap
         
*/
        hashmap1(map);
        line();
        
/*
         * 用keySet遍历
         
*/
        hashmap2(map);
        line();
        
/*
         * 用entrySet遍历 速度快
         
*/
        hashmap3(map);
        line();
    }

    
public   static   void  hashmap1(HashMap < String, String >  map) {
        
for  (Map.Entry < String, String >  entry : map.entrySet()) {
            System.out.println(
" Key: "   +  entry.getKey()  +   "    value: "   +  entry.getValue().toString());
        }

    }

    
public   static   void  hashmap2(HashMap < String, String >  map) {
        Iterator
< String >  it = map.keySet().iterator(); // 这是取得键对象   
         while (it.hasNext())   {   
           System.out.println(
" value:  " + map.get(it.next()));    // 获得键所对应的值。   
        } 
    }

    
public   static   void  hashmap3(HashMap < String, String >  map) {
        Iterator
< Entry < String, String >>  it  =  map.entrySet().iterator();  
        
while (it.hasNext()){  
            Entry
< String, String >   entry = (Entry < String, String > )it.next();  
            System.out.println(
" key: " + entry.getKey() + "    value: " + entry.getValue());
            
        }  
    }
    
public   static   void  line(){
        System.out.println(
" ========================华丽的分割线=============================== " );
    }
}


  Hashmap实际上是一个数组和链表的结合体,利用数组来模拟一个个桶(类似于Bucket Sort)以快速存取不同hashCode的key,对于相同hashCode的不同key,再调用其equals方法从List中提取出和key所相对应的value