HashTable & HashSet 源码分析
来源:互联网 发布:淘宝联盟佣金少了 编辑:程序博客网 时间:2024/05/30 21:58
建议大家看这篇之前先看上一篇HashMap的源码分析,因为这篇是基于上篇大家理解了HashMap的前提下写的。所以这篇大家有什么不明白的地方,先看上篇了解HashMap的源码实现。^_^
HashTable
源码部分可以参考上一篇HashMap,差不多的。
以下几个点注意,
1,HashTable是extends Dictionary<K,V>的,
而HashMap是extends AbstractMap<K,V>的。
2,HashTable方法都是同步的,加了关键字synchronized,如下可以看到源码,对比上一篇文章,可以看到HashMap是没有的。
3, 在HashTable的put方法中,value是不能为null的
4,暂时我看源码找到的最后一个不同点,在下面的源码中已经写在注释中。
HashSet
我们看看HashSet中默认构造方法,会发现HashSet底层是采用HashMap实现。
下面给出HashSet的add方法
可以看到我们往HashSet存的对象最后是作为HashMap的Key存储的,读上篇HashMap的源码应该知道Key是不可能重复的,所以HashSet里面是没有重复的值的,包括往HashSet存null值,也只会有一个null。
呵呵,语言表达也许会表达不清楚,大家运行一下下面的例子,看看打印出来的值,就明白了。
呵呵,其余的也没什么好说了,底层实际上就是HashMap,弄懂HashMap了,再看看这篇介绍的几个有差异的地方就差不多了。
- HashTable & HashSet 源码分析
- 源码分析—HashMap、HashSet、HashTable
- HashTable 和 HashSet 的源码分析
- 深入源码剖析 HashSet、HashMap、HashTable
- HashMap、HashSet、Hashtable源码学习笔记
- JDK源码(一)HashSet、HashMap、Hashtable
- HashSet源码分析
- HashSet源码分析
- HashSet 源码分析
- HashSet源码分析
- HashSet源码分析
- HashSet源码分析
- 深入源码分析HashSet
- 深入源码分析HashSet
- 《Java源码分析》:HashSet
- HashMap HashSet源码分析
- 源码分析-HashSet、LinkedHashSet
- HashSet源码分析
- 二分查找(数组里查找某个元素) php php 二分查找
- How to install sun-java5-jdk on Ubuntu 9.10
- ARM编译的一些感悟
- 输入法编程相关资源汇集
- Ubuntu 10.04 LTS 安装 sun-java6-jdk
- HashTable & HashSet 源码分析
- JVM的版本问题
- php 冒泡排序
- Ubuntu Samba安装与XP共享IP
- C#: 使用正则表达式判断字符串是否是数值或整数
- 消息和消息队列的使用(本问博客首发,转载请表明出处)
- DELPHI常用函数集及简要范例
- C# 数据库访问通用类 (ADO.NET)
- Ajax学习(二)