Java 中 Hashtable 与 HashMap 的异同

在java中,我们可以知道,Hashtable 与 HashMap 是两个基于散列的集合,用存储对象作为键值对。在日常的开发中我们经常使用到。看似基本功能都十分的相似,但作为开发者,我们应该了解关于 Hashtable 与 HashMap 的差异。否则会在一些不同的场景中出现问题。在看他们差异之前,我们先了解一下他们的共同点吧。

共同点

  • 1.HashMap 与 Hashtable 都是继承于 java.util.Map 接口;
  • 2.HashMap 与 Hashtable 都是基于 hash 的集合以及 hash 的工作原理;
  • 3.HashMap 与 Hashtable 提供高性能的 get 和 set 方法,存取对象;
  • 4.在 Jdk 4 以后 Hashtable 与 HashMap 都属于 java 的集合框架。

差异

  • 1.第一个差异就应该是 HashMap 是线程不安全的; Hashtable 是线程安全的;
  • 2.第二个重要差异是性能,应为 HashMap 不是同步的,所以要比 Hashtable 性能更好;
  • 3.HashTable 不允许 null 值(key和value都不可以),HashMap 允许 null 值(key和value都可以);
  • 4.HashTable 使用Enumeration,HashMap 使用Iterator;
  • 5.HashTable 中 hash 数组默认大小是11,增加的方式是 old*2+1。HashMap 中 hash 数组的默认大小是16,而且一定是2的指数
  • 6.哈希值的使用不同,HashTable 直接使用对象的 hashCode 而HashMap重新计算hash值,而且用与代替求模

转载于:https://my.oschina.net/u/265943/blog/292876

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值