update hashmap
This commit is contained in:
+18
-4
@@ -1,15 +1,21 @@
|
|||||||
|
# 链表
|
||||||
## 链表
|
|
||||||
|
|
||||||
* 链表
|
* 链表
|
||||||
* 双向链表
|
* 双向链表
|
||||||
|
* 双向循环链表
|
||||||
|
|
||||||
### 链表
|
## 链表
|
||||||
|
|
||||||
这个就不介绍了。重点说下双向链表。
|
这个就不介绍了。重点说下双向链表。
|
||||||
|
|
||||||
|
|
||||||
### 双向链表
|
### 扩缩容
|
||||||
|
|
||||||
|
简单说下编程语言 java, golang中 LinkList的扩缩容的策略。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 双向链表
|
||||||
|
|
||||||
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
|
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
|
||||||
|
|
||||||
@@ -25,4 +31,12 @@ typedef struct Entry{
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 双向循环链表
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,3 +2,47 @@
|
|||||||
|
|
||||||
java 中 hashmap的实现原理。
|
java 中 hashmap的实现原理。
|
||||||
|
|
||||||
|
```
|
||||||
|
public class HashMap<K,V> extends AbstractMap<K,V>
|
||||||
|
implements Map<K,V>, Cloneable, Serializable {
|
||||||
|
|
||||||
|
static class Node<K,V> implements Map.Entry<K,V> {
|
||||||
|
final int hash;
|
||||||
|
final K key;
|
||||||
|
V value;
|
||||||
|
Node<K,V> next;
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> {
|
||||||
|
TreeNode<K,V> parent; // red-black tree links
|
||||||
|
TreeNode<K,V> left;
|
||||||
|
TreeNode<K,V> right;
|
||||||
|
TreeNode<K,V> prev; // needed to unlink next upon deletion
|
||||||
|
boolean red;
|
||||||
|
}
|
||||||
|
|
||||||
|
public V put(K key, V value) {
|
||||||
|
return putVal(hash(key), key, value, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public V get(Object key) {
|
||||||
|
Node<K,V> e;
|
||||||
|
return (e = getNode(hash(key), key)) == null ? null : e.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 扩容
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user