javahashmap
Ⅰ java中,HashMap的創建流程是什麼
創建流程,指的是:
Map<String, String> mp = new HashMap<String, String>();
嗎?
就是創建一個HashMap對象,其中鍵的類型為String,值的類型也為String;
當然,鍵和值的類型也可以是其他的。例如,創建了一個類叫做Student,我們現在還有每一個學生的學號。那麼就可以建立一個Map<String, Student> 這樣的HashMap。通過這樣的方式,我們就可以利用學號來找到具體對應的學生。
Ⅱ java中HashMap和HashTable有什麼共同點和區別
hashmap和hashtable都實現了map介面,因此很多特性非常相似。但是,他們有以下不同點:
hashmap允許鍵和值是null,而hashtable不允許鍵或者值是null。
hashtable是同步的,而hashmap不是。因此,hashmap更適合於單線程環境,而hashtable適合於多線程環境。
hashmap提供了可供應用迭代的鍵的集合,因此,hashmap是快速失敗的。
另一方面,hashtable提供了對鍵的列舉(enumeration)。一般認為hashtable是一個遺留的類。
Ⅲ java 為什麼使用hashmap
首先當我們需要存儲數據的時候,動態數組雖然能夠自動擴容,但是必須在初始時刻指定初始容量。而對於那些在編譯時無法確定具體的數量即動態增長的數據,就需要用到Java集合類了。對於ArrayList 和 LinkedList,還有 Vector它們都有一些缺點,要麼插入刪除速度慢、要麼就是遍歷速度慢。那麼有沒有一種插入、刪除、遍歷都比較不錯的集合類呢?於是 HashMap 就出現了。HashMap 是一個散列表,它存儲的是一組鍵值對(key-value)的集合,並實現快速的查找。
(1)為了實現快速查找,HashMap 選擇了數組而不是鏈表。以利用數組的索引實現 O(1) 復雜度的查找效率。
(2)為了利用索引查找,HashMap 引入 Hash 演算法, 將 key 映射成數組下標: key -> Index。
(3)引入 Hash 演算法又導致了 Hash 沖突。為了解決 Hash 沖突,HashMap 採用鏈地址法,在沖突位置轉為使用鏈表存儲。
(4)鏈表存儲過多的節點又導致了在鏈表上節點的查找性能的惡化。為了優化查找性能,HashMap 在鏈表長度超過 8 之後轉而將鏈表轉變成紅黑樹,以將 O(n) 復雜度的查找效率提升至 O(log n)。
【綜上】
HashMap 存在的意義就是實現一種快速的查找並且插入、刪除性能都不錯的一種 K/V(key/value)數據結構。
附上一位博主的高見:網頁鏈接
Ⅳ java hashmap怎麼初始化
HashMap 是一種常用的數據結構,一般用來做數據字典或者 Hash 查找的容器。普通青年一般會這么初始化:
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", "test");
map.put("age", "20");
看完這段代碼,很多人都會覺得這么寫太啰嗦了,文藝青年一般這么來了:
HashMap<String, String> map = new HashMap<String, String>() {
{
map.put("name", "test");
map.put("age", "20");
}
};
Ⅳ 在JAVA中Map和HashMap有什麼區別
1、首先Map是一個介面,HashMap實現了Map介面的類;HashMap是類,Map是介面
2、Map是存儲鍵和值這樣的雙列數據集合,但存儲的數據是沒有順序的,其鍵不能重復,但其值是可以重復的,可以通過每一個鍵找到每一個對應的值;HashMap線程不同步的,即線程不安全的,但只有一個線程訪問時效率較高;
3、Map是介面,HashMap是介面Map的實現類,體現了面向介面編程
4、HashMap實現了介面Map,就是說HashMap實現了Map所有的方法。
Ⅵ java中map與hashmap的區別
看看下面這個會更好
HashMap是Hashtable的輕量級實現(非線程安全
的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。
HashMap 把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。 Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。
Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以性能不會有很大的差異。