JAVA集合之Hashtable

本文深入解析了Java中的Hashtable类,重点介绍了其不允许键值对为null的特点,以及线程安全的特性。同时,对比了Hashtable与HashMap在使用上的相似性和线程安全性上的差异。还详细阐述了Hashtable的扩容机制,初始容量为11,负载因子为0.75,并展示了下标计算的方法。
  1. 存放的元素是键值对
  2. Hashtable的键和值都不能为null,否则会抛出空指针异常
    public synchronized V put(K var1, V var2) {
        if (var2 == null) {
            throw new NullPointerException();
        } 
  1. Hashtable使用方法基本和HashMap一样
  2. Hashtable线程安全(synchronized),HashMap线程不安全
  3. 底层有数组 Hashtable$Entry[](每个单元就是一个Node对象,HashMap的底层数组就是这个Hashtable散列表,注意不是HashTable), 初始化大小为11,加载因子是0.75,临界值是8(超过8,到达9即扩容)。
    public Hashtable() {
        this(11, 0.75F);
    }
  1. 扩容机制为扩大原有容量的2n+1
        int var3 = (var1 << 1) + 1;
  1. 下标值计算(var1为key的hashcode(),var5为现有table的长度):
var4 = (var1 & 2147483647) % var5.length
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值