Java基础 Map接口实现类Hashtable

HashTable的基本介绍

1、存放的元素是键值对:即K-V

2、hashtable的键和值都不能为null,否则会抛出NullPointerExce

3、hashTable使用方法基本上和HashMap一样

4、hashTable是线程安全的,hashMap是线程不安全的

5、简单看下底层结构

HashTable的应用案例

//下面的代码是否正确,如果错误,为什么

table.put("john",100);//ok

table.put(null,100);//异常,Key不能为空

table.put("john",null);//异常,value不能为空

table.put("lucy",100);//ok

table.put("lic",100);//ok

table.put("lic",88);//替换

sout(table);

import java.util.Hashtable;

/**
 * @ClassName HashTableExercise
 * @Description
 * @Author 小黄debug
 * @Date 2022/3/13 21:59
 * @Version 1.0
 **/
public class HashTableExercise {
    public static void main(String[] args) {
        Hashtable table = new Hashtable();
        table.put("john", 100);//ok
        //table.put(null, 100);//空指针异常,Key不能为空
        //table.put("john", null);//空指针异常,value不能为空
        table.put("lucy", 100);//ok
        table.put("lic", 100);//ok
        table.put("lic", 88);//替换
        table.put("hello1",1);
        table.put("hello2",1);
        table.put("hello3",1);
        table.put("hello4",1);
        table.put("hello5",1);
        table.put("hello6",1);
        table.put("hello7",1);


        System.out.println(table);

        //简单说明下下Hashtable的底层
        //1.底层有数组 Hashtable$#ntry[] 初始化大小为11
        //2.临界值 threshold 8 = 11 * 0.75
        //3.扩容:按照自己的扩容机制来进行即可
        //4.执行 方法 addEntry(hash,key,value,index);   添加K-V
        //5.当 if(count >= threshold)满足时,就进行扩容
        //6.按照 int newCapacity = (oldCapacity << 1)+1;的大小扩容
    }
}

Hashtable和HashMap对比

版本线程安全(同步)效率允许null键null值
HashMap1.2不安全可以
Hashtable1.0安全较低不可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值