Skip to content

Commit d9f3351

Browse files
author
Tianyi Wang
authored
Update README.md
1 parent 46a3c32 commit d9f3351

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,16 @@ Map中的每一个元素包含一个键对象和值对象,它们成对出现
107107
|增删的时候在扩容的时候慢,通过索引查询快,通过对象查索引慢|增删快,通过索引查询慢,通过对象查索引慢|
108108
|扩容因子1.5倍||
109109

110-
### HashMap和HashTable区别
110+
### HashMap
111+
[面试必问的几个点](http://www.importnew.com/7099.html)
112+
113+
(1)JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。
114+
115+
(2)当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,遍历的时间复杂度就是 O(n),完全失去了它的优势。
111116

117+
(3)针对这种情况,JDK 1.8 中引入了红黑树(查找时间复杂度为 O(logn))来优化这个问题
118+
119+
### HashMap和HashTable区别
112120
1. Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。
113121
2. Hashtable中,key和value都不允许出现null值。HashMap中,null可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为null。
114122
3. 哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

0 commit comments

Comments
 (0)