基於雜湊值的table集合HashTable

2022-09-12 11:09:31 字數 844 閱讀 7074

此類實現乙個雜湊表,該雜湊表將鍵對映到相應的值。任何非null物件都可以用作鍵或值。

hashtable類的實現類似於hashmap類,但是還有有區別的:執行緒安全性,同步(synchronization),以及速度。

hashmap幾乎可以等價於hashtable,除了hashmap是非synchronized的,並可以接受null(hashmap可以接受為null的鍵值(key)和值(value),而hashtable則不行)。

hashmap是非synchronized,而hashtable是synchronized,這意味著hashtable是執行緒安全的,多個執行緒可以共享乙個hashtable;而如果沒有正確的同步的話,多個執行緒是不能共享hashmap的。j**a 5提供了concurrenthashmap,它是hashtable的替代,比hashtable的擴充套件性更好。

另乙個區別是hashmap的迭代器(iterator)是fail-fast迭代器,而hashtable的enumerator迭代器不是fail-fast的。所以當有其它執行緒改變了hashmap的結構(增加或者移除元素),將會丟擲concurrentmodificationexception,但迭代器本身的remove()方法移除元素則不會丟擲concurrentmodificationexception異常。但這並不是乙個一定發生的行為,要看jvm。這條同樣也是enumeration和iterator的區別。

由於hashtable是執行緒安全的也是synchronized,所以在單執行緒環境下它比hashmap要慢。如果你不需要同步,只需要單一執行緒,那麼使用hashmap效能要好過hashtable。

hashmap不能保證隨著時間的推移map中的元素次序是不變的。

基於雜湊值的Set集合HashSet

此類實現 set 介面,由雜湊表 實際上是乙個 hashmap 例項 支援。它不保證 set 的迭代順序 特別是它不保證該順序恆久不變。此類允許使用 null 元素。此類的實現類似於hashmap,此類的容器儲存的元素也是鍵值對entry,其中key指向當前新增的操作物件,value的固定為 obj...

YARN篇 基於HA的YARN集群搭建

修改配置如下 vi mapred site.xml mapreduce.framework.namename yarnvalue property vi yarn site.xml yarn.nodemanager.aux servicesname mapreduce shufflevalue pr...

物件的雜湊值

3 遍歷該位置上的所有舊元素,依次比較每個舊元素的雜湊值和新元素的雜湊值是否相同。4 比較新元素和舊元素的位址是否相同 5 說明沒有重複,則將新元素存放到該位置上並讓新元素記住之前該位置的元素。問題 為什麼儲存字串的時候,字串內容相同的只儲存了乙個呢?按照方法的步驟來說 public static ...