文章字数:177,阅读全文大约需要1分钟
内部使用
transient Node<K,V>[] table;
存储数据插入和读取元素主要通过
hash
算法将key
转换成相应数组下标。当多个元素拥有同一个hash
值时这些元素就会在这个数组下形成链表,(jdk1.8)之后链表元素超过8个就会使用红黑树的形式存储。插入之前会判断一下是否需要扩容,扩容机制另一篇文章有说明。HashMap扩容机制
序列化时
table
字段不会被保存因为被transient
修饰。HashMap
重写了writeObject
和readObject
方法,以保证系列化时数据的保存。