首先介紹一下hashtable
與hashmap
。hashtable類實現乙個雜湊表,該雜湊表將鍵對映到相應的值。任何非 null 物件都可以用作鍵或值。
hashmap是基於雜湊表的map 介面的實現。此實現提供所有可選的對映操作,並允許使用 null 值和 null 鍵。hashmap不保證對映的順序,特別是它不保證該順序恆久不變。。
現對hashmap
和hashtable
的區別總結如下:
1.hashtable與
hashmap
繼承的介面不同。
hashtable繼承的是
dictionary
介面,而
hashmap
繼承的是
map介面。
2.寫程式的時候,hashmap
中儲存的
key值和
value
值可以為
null
,而hashtable
中儲存的
key值和
value
值都不可以是
null
。在hashmap
中,值為
null
的key
只能有乙個
;而值為
null
的value
可以有多個,每乙個
value
對應於不同的
key。
在使用hashmap
的get
(
object
key)
方法時要注意,當返回值為
null
時,代表著兩種含義,一種是
hashmap
中沒有相應的
key鍵,另一種是該鍵對應的值是
null
。所以我們要判斷
hashmap
中是否存在某個鍵的時候,不能使用get
(
object
key)
方法來進行判斷,而應該用containskey
(
object
key)
方法來判斷。
3.hashtable中有contains
(
object
value)
,containskey
(
object
key),containsvalue
(
object
value)
方法;而在hashmap
中去除了
contains
(
object
value)
方法,只有
containskey
(
object
key),containsvalue
(
object
value)
方法方法,因為
contains
(
object
value)
方法容易讓人產生誤解。
4.hashmap與
hashtable
最大的不同是:
hashmap的方法不是
synchronized
(同步)的,而hashtable
的方法是
synchronized的。
即多個執行緒訪問hashtable
時,不需要再為它的方法提供專門的操作來實現同步,它自身就擁有同步機制;而
hashmap
則需要為它的方法實現外同步。
hashmap的同步問題可通過
collections
的乙個靜態方法得到解決,使用 collections.synchronizedmap
(map m) 方法來「包裝」該對映。
資料結構與演算法之雜湊 hash table
1 雜湊 由資料項的值來確定資料存放的位置。雜湊表中的儲存位置被成為槽。2 雜湊函式 實現從資料項到儲存槽的轉換的函式稱為雜湊函式。3 槽號 雜湊函式返回的資料項的儲存位置。求餘雜湊 方法 將資料項除以雜湊表的大小,得到的餘數作 為槽號。實際上 求餘數 方法會以不同形式出現在所有 雜湊函式裡 因為雜...
資料結構與演算法 Hash Table
參考自 談談 hash table 雜湊表是一種資料結構,實現key value的快速訪問。之前說過陣列可以實現快速隨機訪問,所以雜湊表肯定會使用到陣列。在這裡,我們把每乙個陣列的單元叫做乙個bucket 桶 雜湊表的大小最好是素數。雜湊表是乙個在時間和空間上做出權衡的經典例子。如果沒有記憶體限制,...
資料結構 HashTable
基本介紹 雜湊表管理學生資訊概圖 示例 data public class student public student int id,string name,string string address public class studentlinkedlist 如果鍊錶為空,直接將節點新增到鍊錶...