HashMap、HashTable和Vector是面试时比较高频问到的知识点,今天就从三个的底层源码的角度分析三者之间的存储、扩容原理和异同点。
HashMap:实现Map接口
实现原理:HashMap采用链地址法。即底层是一个数组实现。数组的每一项(即一个Entry)又是一个链表。结构图如下:
每个Entry是一个键值对。源码如下:
1. transient Entry[] table;
2.
3. static class Entry<K,V> implements Map.Entry<K,V> {
4. final K key;
5. V value;
6. Entry<K,V> next;
7. final int hash;
8. ……
9. }
HashMap