<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學(xué)習(xí)

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對(duì)文章有任何疑問(wèn)或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂(lè)園)指出,我會(huì)盡力幫助解決。一起進(jìn)步

     

    HashMap和Hashtable的區(qū)別 以及Hashmap的用法

    Hashtable和HashMap類(lèi)有三個(gè)重要的不同之處。第一個(gè)不同主要是歷史原因。Hashtable是基于陳舊的Dictionary類(lèi)的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)。

    也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用采取任何特殊的行為就可以在一個(gè)多線(xiàn)程 的應(yīng)用程序中用一個(gè)Hashtable,但你必須同樣地為一個(gè)HashMap提供外同步。一個(gè)方便的方法就是利用Collections類(lèi)的靜態(tài)的 synchronizedMap()方法,它創(chuàng)建一個(gè)線(xiàn)程安全的Map對(duì)象,并把它作為一個(gè)封裝的對(duì)象來(lái)返回。這個(gè)對(duì)象的方法可以讓你同步訪(fǎng)問(wèn)潛在的 HashMap。這么做的結(jié)果就是當(dāng)你不需要同步時(shí),你不能切斷Hashtable中的同步(比如在一個(gè)單線(xiàn)程的應(yīng)用程序中),而且同步增加了很多處理費(fèi) 用。

    第三點(diǎn)不同是,只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value。HashMap中只有一條記 錄可以是一個(gè)空的key,但任意數(shù)量的條目可以是空的value。這就是說(shuō),如果在表中沒(méi)有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個(gè)空的值,那么 get()將返回null。如果有必要,用containKey()方法來(lái)區(qū)別這兩種情況。

    一些資料建議,當(dāng)需要同步時(shí), 用Hashtable,反之用HashMap。但是,因?yàn)樵谛枰獣r(shí),HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而 且它不是基于一個(gè)陳舊的類(lèi)的,所以有人認(rèn)為,在各種情況下,HashMap都優(yōu)先于Hashtable。

    關(guān)于Properties
    有時(shí)侯,你可能想用一個(gè)hashtable來(lái)映射key的字符串到value的字符串。DOS、Windows和Unix中的環(huán)境字符串就有一些例子, 如key的字符串PATH被映射到value的字符串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表示這些的一個(gè) 簡(jiǎn)單的方法,但Java提供了另外一種方法。

    Java.util.Properties類(lèi)是Hashtable的一個(gè)子類(lèi),設(shè)計(jì)用于String keys和values。Properties對(duì)象的用法同Hashtable的用法相象,但是類(lèi)增加了兩個(gè)節(jié)省時(shí)間的方法,你應(yīng)該知道。

    Store()方法把一個(gè)Properties對(duì)象的內(nèi)容以一種可讀的形式保存到一個(gè)文件中。Load()方法正好相反,用來(lái)讀取文件,并設(shè)定Properties對(duì)象來(lái)包含keys和values。

    注意,因?yàn)镻roperties擴(kuò)展了Hashtable,你可以用超類(lèi)的put()方法來(lái)添加不是String對(duì)象的keys和values。這是不 可取的。另外,如果你將store()用于一個(gè)不包含String對(duì)象的Properties對(duì)象,store()將失敗。作為put()和get()的 替代,你應(yīng)該用setProperty()和getProperty(),它們用String參數(shù)。
     

    package com.neusoft.edu.dcp.uim;

    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.Map;
    import java.util.TreeMap;

    public class HashMapDemo {
    //初始化
    private void init(Map map,String kind)
    {
       if(map != null)
       {
        for(int i=1; i<6; i++)
        {
         map.put(String.valueOf(i),kind+i);
        }
       }
    }

    //結(jié)果輸出
    private void outPut(Map map)
    {
       if(map != null)
       {
        Object key    = null;
        Object value = null;
        Iterator iterater = map.keySet().iterator();
        while(iterater.hasNext())
        {
         key = iterater.next();
         value = map.get(key);
         System.out.print(key+": "+value+"\t");
        }
        System.out.println("\n");
       }
    }
    public static void main(String args[])
    {
        HashMap hashmap = new HashMap();
        hashmap.put("x", "1");
        hashmap.put("u", "2");
        hashmap.put("z", "3");
        hashmap.put("h", "4");
        hashmap.put("a", "5");
        hashmap.put("o", "6");
        hashmap.put("g", "7");
        hashmap.put("u", "8");
        hashmap.put("a", "9");
        hashmap.put("n", "10");
        hashmap.put("g", "11");
      
         Object key    = null;
         Object value = null;
         Iterator iterater = hashmap.keySet().iterator();
         while(iterater.hasNext())
         {
          key = iterater.next();
          value = hashmap.get(key);
          System.out.print(key+": "+value+"\t");
         }
         System.out.println("\n");
      
    }
    //聲明HashMap對(duì)象
    private void setHashMap()
    {
       HashMap hashMap = new HashMap();
       init(hashMap,"HashMap");
       hashMap.put(null,"鍵值為空");
       hashMap.put("值為空",null);
       System.out.println("這是HashMap對(duì)象的鍵與值:");
       outPut(hashMap);
    }
         //聲明Hashtable對(duì)象
    private void setHashtable(){
       Hashtable hashtable = new Hashtable();
       init(hashtable,"Hashtable");
       //hashtable.put(null,"鍵值為空"); Hashtable不允許鍵或值為null;
       //hashtable.put("值為空",null);
       System.out.println("這是Hashtable對(duì)象的鍵與值:");
       outPut(hashtable);
    }
         //聲明LinkedHashMap對(duì)象
    private void setLinkedHashMap(){
       LinkedHashMap linkedHashMap = new LinkedHashMap();
       init(linkedHashMap,"LinkedHashMap");
       linkedHashMap.put(null,"鍵值為空");
       linkedHashMap.put("值為空",null);
       System.out.println("這是LinkedHashMap對(duì)象的鍵與值:");
       outPut(linkedHashMap);
    }
         //聲明TreeMap對(duì)象
    private void setTreeMap(){
       TreeMap treeMap = new TreeMap();
       //TreeMap treeMap = new TreeMap(new MySort());//按自定義的方式排序
       init(treeMap,"TreeMap");
       treeMap.put("0", "后插入的值");
       //treeMap.put(null,"鍵值為空"); TreeMap不允許鍵或值為null
       //treeMap.put("值為空",null);
       System.out.println("這是TreeMap對(duì)象的鍵與值:");
       outPut(treeMap);
    }
    // public static void main(String[] args){
    //   HashMapDemo tm = new HashMapDemo();
    //   tm.setHashMap();
    //   tm.setHashtable();
    //   tm.setLinkedHashMap();
    //   tm.setTreeMap();
    //  
    //   Map hashMap = new HashMap();
    //   hashMap.put(null, "鍵值為null");
    //   hashMap.put("值為null", null);
    //   System.out.println("新建HashMap對(duì)象元素的記錄數(shù)是:"+hashMap.size());  
    //   hashMap.remove(null);
    //   System.out.println("刪除鍵值為null的HashMap對(duì)象元素的記錄數(shù)是:"+hashMap.size());  
    // }
    }

    posted on 2008-11-08 14:52 找個(gè)美女做老婆 閱讀(2165) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲中文字幕日产乱码高清app| 99热亚洲色精品国产88| 国产亚洲漂亮白嫩美女在线| 在线看无码的免费网站| 亚洲综合色视频在线观看| 中文字幕亚洲情99在线| 国产一精品一AV一免费| jjzz亚洲亚洲女人| 亚洲精品福利你懂| 久久w5ww成w人免费| 亚洲色无码专区在线观看| 偷自拍亚洲视频在线观看99| 免费视频专区一国产盗摄| 亚洲AV无码一区东京热久久| 日韩成人毛片高清视频免费看| 在线jyzzjyzz免费视频| 亚洲精品成人图区| 久久青草精品38国产免费| 精品亚洲一区二区三区在线观看| 国产亚洲欧美在线观看| 成人在线免费观看| 亚洲丝袜中文字幕| 88av免费观看入口在线| 国产亚洲人成网站在线观看不卡| 四虎影视久久久免费| 国产美女无遮挡免费视频网站| 中文文字幕文字幕亚洲色| h视频在线免费看| 亚洲一二成人精品区| a级成人毛片免费图片| 国产成人精品日本亚洲专区61| 美女扒开尿口给男人爽免费视频| 免费毛片在线看片免费丝瓜视频| 亚洲国产成人精品青青草原| 最近高清中文字幕免费| 亚洲欧洲一区二区| 久久狠狠躁免费观看| 婷婷精品国产亚洲AV麻豆不片| 永久免费av无码网站yy| 国产亚洲欧洲精品| 久久大香伊焦在人线免费|