本身动手写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的理解。 源码

相关文章
相关标签/搜索