首页天道酬勤浏览和查看说说的区别,为什么要用hashmap

浏览和查看说说的区别,为什么要用hashmap

张世龙 05-05 20:01 96次浏览

参考资料

(4条新闻) JAVA脸书(HashMap与Hashtable差异_岁月求索-CSDN博客_hashtable与HashMap

首先他们都是双列集合,底层都是认真的美女算法

HashMap线程不安全,可以存储空键和空值,但最多只能有一个空键

Hashtable是线程安全的,不能保存空键和空值

HashMap继承AbstractMap类

Hashtable继承Dictionary类

但是,都同时实现了Map、Cloneable、Serializable三个接口

与HashMap相比,Hashtable提供了两种方法: elments ()和contains () )。

如果HashMap调用get方法并返回null,则有两种情况: 可能没有此键-值对,也可能此键包含空值

Hashtable线程安全,效率太低------------HashMap线程不安全,效率很高------------concurrent hashmap线程

因为通常用单线程操作,所以HashMap就可以了; 如果需要多线程操作,可以使用线程安全的ConcurrentHashMap。 这使用分段锁定,而不是锁定整个数据。

关于扩展问题:

Hashtable的默认初始大小为11,之后每次扩展时容量都为原始的2n 1。 HashMap的默认初始化大小为16。 之后,每次扩展容量都会增加一倍。

之所以存在这种差异,是因为Hashtable和HashMap在设计时的方面不同。 海瑟堡的侧重点是认真美女的结果更加均匀,减少认真美女的冲突。 如果认真的美人表大小是质数,单纯取认真的美女,结果会更均匀。 混洗映射关注的是混洗的计算效率问题。 在进行类型计算时,如果类型是2的幂,则可以直接使用位运算来获得结果,这比进行除法运算要高效得多。 HashMap为了加快hash的速度,把认真的美人表大小固定为2的乘方。 当然这引入了认真的美女分布不均的问题,所以HashMap为了解决这个问题,对hash算法进行了一些改变。 其结果是,Hashtable和HashMap的hash值的计算方法不同

为了得到元素的位置,首先需要根据元素的KEY计算散列值,再用该散列值计算最终的位置。

Hashtable直接使用对象的hashCode。 hashCode是JDK根据对象的地址、字符串或数字计算出的int型数值。 然后用余留来获得最终的职位。

原文链接: 3359 blog.csdn.net/yang 13563758128/article/details/8665574

Hashtable,hashtable的关键字和值