经典JAVA面试回答:HashMap和HashTable区别,其底层实现是什么?

HashMap和HashTable都是Java中的键值存储结构,但HashMap非线程安全,允许null键值,而HashTable线程安全,不支持null。它们都以数组+链表(JDK8后部分场景变为红黑树)的形式实现。HashMap在高并发下可能存在环形链表问题,但JDK1.8已解决。在选择使用时,需根据是否需要线程安全和性能需求来决定。
摘要由CSDN通过智能技术生成

HashMap和HashTable论点

1.安全性

2.是否可以使用null作为key

3.继承了什么,实现了什么

4.默认容量及如何扩容

6.底层实现

7.计算hash的方法不同

HashMap继承了AbstractMap,HashTable继承Dictionary抽象类,两者均实现Map接口。从诞生时间点来看,HashTable生于JDK 1.1,而HashMap生于JDK 1.2。从时间上来看,HashMap要比HashTable出现得晚。

具体从以下进行论述

HashMap和HashTable相同点:

  1. 都是以key和value的形式进行存储数据;
  2. 两者都实现了Map、Cloneable(可克隆)、Serializable(可序列化)接口。

HashMap和HashTable不同点:

两者区别 :

  1. HashMap方法没有被synchronized所修饰,没有锁机制的话,在线程同步方面,HashMap是线程非安全,HashTable因为有了锁机制,所以是线程安全;

实现代码如下:

 

  1. HashMap允许key和value为null,而HashTable不允许Value和key为null。

实现代码如下&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值