0%

HashMap的存储原理

文章字数:177,阅读全文大约需要1分钟

  1. 内部使用transient Node<K,V>[] table;存储数据

  2. 插入和读取元素主要通过hash算法将key转换成相应数组下标。当多个元素拥有同一个hash值时这些元素就会在这个数组下形成链表,(jdk1.8)之后链表元素超过8个就会使用红黑树的形式存储。

  3. 插入之前会判断一下是否需要扩容,扩容机制另一篇文章有说明。HashMap扩容机制

  4. 序列化时table字段不会被保存因为被transient修饰。HashMap重写了writeObjectreadObject方法,以保证系列化时数据的保存。