HashTable

为了春招,系统地复习一下Java相关的知识,应该不会写源码解析,完全是给自己看的,如果足够幸运,有幸进入大厂,重新写下给别人看的

注意点

  • HashTable和HashMap都实现了Map接口,所以需要对比着说

  • HashTable也是使用拉链法,即底层使用数组和链表实现哈希表.

  • 默认值可能有些不同

    • HashTable的底层数组的初始长度为11
    • 负载因子一样,都是0.75
    • 扩容大小是2倍旧长度+1
  • HashTable的hash算法和hashMap不同,是这样计算的(hash & 0x7FFFFFFF) % tab.length,tab就是底层数组,hash就是对象的hashcode值,说实话,不对这样的计算并不是很理解,就不卖弄了.

  • 说一下区别吧

    • HashTable底层数组长度没有2的n次方的要求,看初始长度就知道了
    • HashTable的键值都不允许为null,如果为null,会直接报空指针异常,而hashMap可以.
    • HashTable是线程安全的,通过同步方法来实现,虽然都说多线程下使用HashTable代替hashMap,但是我并不喜欢HashTable,主要是它的锁粒度太大了,我觉得小程序还好,稍微要求并发量的程序可能都不能达到要求.
  • HashTable我没有说太多,一是我使用的很少,二是有些操作就是链表的操作,和我在HashMap中说的其实很象,可以看下这篇

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值