本身動手寫AbstractMap

        根據前輩的建議,最近在關注Java 的HashMap細節。 java

        HashMap派生自AbstractMap,根據JDK的API描述,今天動手寫了一個AbstractMap實現。 函數

        AbstractMap實現了Map<K, V>接口,Map<K,V>包含了一個內嵌的Entry<K,V>接口,Entry<K,V>描述了一個鍵值對,以及基於該鍵值對的操做。所以,除了Map<K,V>接口,AbstractMap還須要實現本身內嵌的Entry<K,V>接口,分別是SimpleEntry和SimpleImmutableEntry,表示可變和不可邊的Entry。實現方法參考AbstractMap的API描述就明白了,注意的是put方法直接拋出了UnsupportedOperationException。 學習

        AbstractMap實現的方法都比較簡單,因爲語言的不熟悉也碰到一些小問題。寫完以後,很想知道java本身的版本是如何實現的,度娘後發現原來jdk的目錄下面有個src.zip的壓縮包,裏面就是部分jdk源碼。 接口

        對照了java的AbstractMap實現,原來沒有本身想得那麼難,本身的實現大部分都沒問題,細節上也能看出人家代碼的嚴謹和規範性,也是值得學習的地方。主要的問題是在獲取key,value,key-value集合的函數中,因爲對java迭代器的不熟悉不知道如何構造新的集合,參考源碼後有了一些瞭解。 ip

        本身動手最大的收穫,一方面是對java語法熟悉得快,另外一方面也更能加深對API的理解。 源碼

相關文章
相關標籤/搜索