分析 java.util.Hashtable 源码

Java64

概述

基于J11,该类已经淘汰,如果使用线程安全的则用 ConcurrentHashMap ,用线程不安全的则使用 HashMap 。仅与HashMap进行比较

结构以及依赖关系

HashTable 的结构如下图
分析 java.util.Hashtable 源码
当遇到有同样 Hash 值的情况,会通过链表来解决冲突问题(链接法,通过链表解决冲突问题)。
链接法会随着冲突的增多导致查询时间越来越慢。会出现一种恶劣的情况,当散列算法特别差时;元素总数 n和某个槽位数 m 中的 k 相等,如下图所示
分析 java.util.Hashtable 源码

在这种情况下,查找的时间为 (O(1+a)) 其中 (O(1)) 为hash

通过下图可以得知 Hashtable 与其他类的关系

classDiagram direction BT class Cloneable { <

实际上,Hashtable中的每个元素都是一个 Map.Entry<k,v></k,v>EntryMap 的集合形式 用来遍历 Map 。Hashtable实现了该接口,Hashtable就是一个集合,不过存储的是一个一个链表。

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长