回覆列表
  • 1 # 使用者2292948274874

    Hashtable和HashMap類有三個重要的不同之處。第一個不同主要是歷史原因。Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現。也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用採取任何特殊的行為就可以在一個多執行緒的應用程式中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步。一個方便的方法就是利用Collections類的靜態的synchronizedMap()方法,它建立一個執行緒安全的Map物件,並把它作為一個封裝的物件來返回。這個物件的方法可以讓你同步訪問潛在的HashMap。這麼做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單執行緒的應用程式中),而且同步增加了很多處理費用。第三點不同是,只有HashMap可以讓你將空值作為一個表的條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數量的條目可以是空的value。這就是說,如果在表中沒有發現搜尋鍵,或者如果發現了搜尋鍵,但它是一個空的值,那麼get()將返回null。如果有必要,用containKey()方法來區別這兩種情況。一些資料建議,當需要同步時,用Hashtable,反之用HashMap。但是,因為在需要時,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基於一個陳舊的類的,所以有人認為,在各種情況下,HashMap都優先於Hashtable。關於Properties有時侯,你可能想用一個hashtable來對映key的字串到value的字串。DOS、Windows和Unix中的環境字串就有一些例子,如key的字串PATH被對映到value的字串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表示這些的一個簡單的方法,但Java提供了另外一種方法。Java.util.Properties類是Hashtable的一個子類,設計用於String keys和values。Properties物件的用法同Hashtable的用法相象,但是類增加了兩個節省時間的方法,你應該知道。

  • 中秋節和大豐收的關聯?
  • 大家喜歡《我和我的祖國》這首歌曲嗎?