HashMap 是个 LinkedList<HashMapEntry<K, V>>[]
, 或 TreeNode<HashMapEntry<K, V>>[]
1. 实现 HashMapEntry
- 顺便重写下 equal 和 hashcode
2. 实现 HashMap 的方法
- hash():计算hash
- get():在相应的
table[hash(key)]
中寻找相应的值 - put(): 考虑要不要 resize
- resize(): 扩充 hashmap
- remove()
- 其他可选方法,如 clone,replace 等
3. 考虑并行操作异常
- 在增删改方法添加 modCount 计数,抛出 ConcurrentModificationException 异常
4. 考虑遍历:EntrySet
先实现 Iterator 类
- 实现 hasNext,next
实现 EntrySet 类
- iterator()
- contain()
- remove()
5. 考虑树化
- 在 put 和 remove 中添加符合树化条件的情况,和从树转换回链表的情况
- 实现 TreeNode 类 (具体实现再议)