如何实现一个简单的 HashMap

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 类 (具体实现再议)
访问量: 访客数: