Untitled

  1. HashMap 基于hashing 原理,通过 put(key,value) 和 get(key) 方法存储和获取对象。
  2. 当存储对象时,将键值对传递给 put(key, value ) 方法时,它调用键对象 key 的 hashCode() 方法来计算 hashcode,然后找到 bucket 位置,来存储值对象 value。
  3. 当获取对象时,也是先计算 key 的 hashCode,找到数组中对应位置的 bucket 位置,然后通过 key 的 equals() 方法找到正确的键值对 key-value,然后返回值对象 value。
  4. HashMap 使用链表来解决碰撞问题,当发生碰撞了,对象将会存储在链表的下一个节点中。HashMap 每个链表节点中,存储键值对 key-value 对象。也就是当两个不同的键对象key的hashcode 相同时,它们会存储在同一个 bucket 位置的链表(JDK8链表长度大于8变红黑树)中,取数据可通过键对象 key 的 equals() 方法用来找到正确的键值对 key-value。

HashMap原理详解,看不懂算我输(附面试题)