1. 程式人生 > >對比hashtable,hashmap,treemap的區別

對比hashtable,hashmap,treemap的區別

一個 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的區別