HashMap 和 HashTable 有什么区别
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,HashMap 和 HashTable 有什么区别,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、线程是否安全:HashMap 是非线
千家信息网最后更新 2025年12月01日HashMap 和 HashTable 有什么区别1、线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的; HashTable 内部的方法基本都经过 2、效率: 因为线程安全的问题,HashMap 要比 HashTable 效率高一点。 另外,HashTable 基本被淘汰,不要在代码中使用它; 3、对Null key 和Null value的支持: HashMap 中,null 可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为 null。 。 但是在 HashTable 中 put 进的键值只要有一个 null,直接抛出 NullPointerException。
4、初始容量大小和每次扩充容量大小的不同 :
①创建时如果不指定容量初始值,Hashtable 默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。 HashMap 默认的初始化大小为16。 之后每次扩充,容量变为原来的2倍。 ②创建时如果给定了容量初始值,那么 Hashtable 会直接使用你给定的大小,而 HashMap 会将其扩充为2的幂次方大小(HashMap 中的 5、底层数据结构: JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间。 Hashtable 没有这样的机制。 HashMap 中带有初始容量的构造函数:
HashMap 和 HashTable 有什么区别,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
synchronized 修饰。 (如果你要保证线程安全的话就使用 ConcurrentHashMap 吧! );tableSizeFor() 方法保证,下面给出了源代码)。 也就是说 HashMap 总是使用2的幂作为哈希表的大小,后面会介绍到为什么是2的幂次方。public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity); if (initialCapacity > MAXIMUM_CAPACITY) initialCapacity = MAXIMUM_CAPACITY; if (loadFactor <= 0 || Float.isNaN(loadFactor)) throw new IllegalArgumentException("Illegal load factor: " + loadFactor); this.loadFactor = loadFactor; this.threshold = tableSizeFor(initialCapacity);}public HashMap(int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR);}下面这个方法保证了 HashMap 总是使用2的幂作为哈希表的大小。
/*** Returns a power of two size for the given target capacity.*/static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;}看完上述内容,你们掌握HashMap 和 HashTable 有什么区别的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
大小
容量
安全
方法
线程
问题
哈希
保证
内容
效率
更多
不同
较大
束手无策
为此
也就是
也就是说
代码
函数
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
西安一码通是哪个公司的服务器
网络安全控制和监测
东京购物软件开发
pc软件开发报价
如何爬取公众号的数据库
lbs移动数据库
计算机网络技术怎么过
公司月度网络安全报告
唐山市网络安全技能竞赛
吉林省教育厅网络安全
数据库 服务器分离
怎么进入云课堂服务器
徐汇区网络安全保卫支队
学章门MySQL数据库考试题目
Ai写作软件开发
数据库小数的字段名
浪潮服务器硬件日志导出
绝地求生更新服务器
服务器80和443端口是什么
电厂人员网络安全不懂管控
南京有软件开发公司吗
互联网企业是高科技吗
江苏软件开发的公司
怎么进入云课堂服务器
淘宝网络技术安全总监
绝地求生更新服务器
如何判断域信息中哪些是服务器
网络技术追款
崇明区工业软件开发收费
网络安全秘钥是哪个密码