自己动手写AbstractMap

        根据前辈的建议,最近在关注Java 的HashMap细节。

        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迭代器的不熟悉不知道如何构造新的集合,参考源码后有了一些了解。

        自己动手最大的收获,一方面是对java语法熟悉得快,另一方面也更能加深对API的理解。

转载于:https://my.oschina.net/sayitok/blog/214513

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值