如何进行Hashtable源码解析
如何进行Hashtable源码解析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站建设、阿荣网络推广、微信小程序定制开发、阿荣网络营销、阿荣企业策划、阿荣品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供阿荣建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
今天我们来分析一下Hashtable的底层实现。提到Hashtable可能对于有些人来说会比较陌生,因为不经常使用。这是因为Hashtable是很早就有的集合类了,因为它是在JDK1.0版本中存在的。HashMap集合是在Hashtable集合之后才有的。也可以理解为HashMap集合是优化后的Hashtable。所以它们底层的实现方式几乎是一样,但它们也有些不同的地方要注意,并且它们都是用哈希表的方式存储的。既然我们已经掌握了HashMap的底层实现,那么我们在分析Hashtable时会比较容易,所以本篇中将直接分析Hashtable的底层源码,将不在介绍哈希表的相关知识了。还是和其它集合一样,我们还是先看Hashtable的初始化。
初始化
上面源码是Hashtable集合初始化时所调用的方法,也就是我们通过默认无参的构造方法创建Hashtable对象时,就会执行上述代码。因为我们已经分析过HashMap中的源码了,所以在这里我们将不做过多的解释了。我们将重点分析一下Hashtable初始化与HashMap初始化有何不同。
我们在HashMap这篇文章中分析过,在通过无参的构造方法创建HashMap对象时,只会设置HashMap中的加载因子为默认的0.75,并不会执行底层数组的初始化。而在Hashtable中,不但设置了默认的加载因子为0.75,并且已经将底层的数组初始化了。默认初始化的数组大小为为了11。
下面我们看一下Hashtable中的put方法的底层实现逻辑。
通过对上面源码的分析,我们可以得出以下Hashtable的特性。
当我们通过无参构造方法创建Hashtable对象时,底层的数组就会执行初始化,并将数组大小设置为默认大小为11,将加载因子设置为默认值0.75
Hashtable中不允许保存null元素,无论是key还是value
Hashtable不能保存相同的key元素,如果元素的key相同,则将后添加到Hashtable中的元素的value覆盖原Hashtable已经存在的元素的value
Hashtable执行再散列时,会创建比原来数组大2倍+1的新数组
Hashtable中我们发现方法中添加了同步关键字synchronized,这就说明在Hashtable是线程安全的集合类,在多线程开发时,无需添加额外的同步代码,就可以保证集合的线程安全
关于如何进行Hashtable源码解析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
网站名称:如何进行Hashtable源码解析
转载来于:http://myzitong.com/article/ijhpce.html