對比hashtable,hashmap,treemap的區別
阿新 • • 發佈:2018-11-24
一個 value 緩存 image 順序 類型 tab 遇到 nbsp
一:hashtable線程安全,不支持null鍵和值,hashmap支持null鍵和值,treemap是紅黑樹實現的,可以通過key的comparotor實現排序,還有原始類型的自然順序,它的get,remove,add都是logn時間復雜度
二:hashmap 的實現原理,負載因子,容量,多線程導致的循環占用cpu,size不準確
三:
四:用到集合的時候一定要考慮自己創建的對象是否需要從新實現equals和hashcode方法。如果用到hashmap,一定要註意這倆個方法。這倆個都要實現,不能漏一個。
五:linkHashMap 的遍歷順序符合插入的順序,註意,這種數據結構可以用來實現緩存刪除策略,最近最少使用的緩存刪除策略。有個構造方法可以實現這種需求
六:treemap就是根據鍵的順序決定的,實現comparable或者comparator接口
七:comparato 的實現與eqauls一致
八:hashmap結構
九:hashmap的使用實在第一次使用的時候,沒有在構造函數初始化的。
十:hashmap源碼:主要的邏輯主要是在putvalue中,大於負載因子*容量就會擴容,而且會擴容2倍。達到一定的值就會轉為樹
樹化的根本問題是安全,如果map遇到攻擊就會變成鏈表,轉為樹,可以提高性能,避免拖垮服務器
import java.util.LinkedHashMap...
極客時間版權所有: https://time.geekbang.org/column/article/8053
對比hashtable,hashmap,treemap的區別