版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/youngogo/article/details/81267644
-
典型回答
1、hashtable是早起java類庫提供的一個哈希表實現,本身是同步的,不支持null鍵和空值,由於同步導致的性能開銷,現在已經很少被使用了
2、hashmap是應用更加廣泛的哈希表實現,應爲大體和hashtable一致,不同點是hashmap支持null鍵和空值,而且不是同步的。他的put和get方法,可以達到常數時間的性能,是絕大多數利用鍵值對存取場景的首選
3、treemap是基於紅黑樹實現的一種提供順序訪問的map,與hashmap不同的是的get和putremove方法,都是log(n)的時間複雜度,具體順序可以由指定的comparator來決定,默認是按照升序排列。
-
考點分析
上面的回答,只是對一些基本特徵的簡單總結,針對 Map相關可以擴展出好多問題,如從各種數據結構、典型應用場景,到程序設計實現的技術考量,尤其在Java8中hashmap發生了很多變化,這些都是經常考察的方面。
關於最新JDK8HashMap實現原理請看小編下篇博客(更新中)
-
知識擴展
對Map知識框架有個整體瞭解,map經常被包含在Java的集合框架裏面,map並不是狹義上的collections集合類型。具體請參照下面這個簡單類圖。
小編道行還沒那麼深,歡迎大家積極發言交流哈