史上最简单的MultiHashMap的实现(使用JAVA已有的容器框架)

   在开发中,有时候我们需要一对多的容器.J2SE没有提供这样的容器:map,table只支持一对一的映射,惟有list支持存储重复的值,但是不支持映射.

很恼火为什么SUN不开发MultiHashMap,查了一下,SUN给出的官方理由是: MultiHashMap在开发中不经常使用:

The Java Collections Framework doesn't include an interface for multimaps because they aren't used all that commonly.

详情见:http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html

但是SUN给了一个思路:List+Map来实现MultiHashMap.

最开始参考Apache的JAVA开源包commons中的collections包中的MultiHashMap的实现.我在NetBeans中使用了一下这个类,但是很遗憾:编译器提示这个类已经过期,估计是这个类中使用了老版本的JDK中的类.再看代码的实现:实现复杂,把一些父类没有必要的重写的方法也重写了,代码可读性差,尤其是还不支持存储null.实在是很失望,没办法,只有DIY了.写完了后发现:自己比Apache的那些家伙要聪明~_~

1>.支持泛型(不支持泛型,还能称作容器吗?),如果对JAVA的泛型还不熟悉的,请看这篇文章:

http://www.ibm.com/developerworks/cn/java/j-djc02113/index.html个人感觉JAVA的泛型比C++的还要恶心,尤其是类型的限定:居然使用extends.

2>.支持null的存取,这也是符合SUN的JDK规范的,因为HashMap是支持null的存取的.

3>.实现简洁,只重写了必要的父类的方法: put, putAll方法.这样做的原因是:确保存进去的是List或null

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值