HashMap简介
- HashMap 基于数组+红黑树(1.8,拉链上entry超过8个)/链表(1.8之前)实现
- HashMap 允许key ,value 为null
- HashMap 不保证映射顺序(hash冲突)
- HashMap 不同步,线程不安全
- HashTable 除了 线程安全,同步,key 和value 不能为 null,其它与 HashMap 一样
继承关系
class HashMap<K,V> extends AbstractMap<K,V>
实现接口
class HashMap implements Map<K,V>, Cloneable, Serializable
HashMap方法(API)
1 | void clear() |
HashMap源码
1 | public class HashMap<K,V> extends AbstractMap<K,V> |
总结
- HashMap 是通过哈希表来存储一个key-value的键值对,每个key对应一个value,允许key和value为null
- HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。HashMap的容量不足的时候,可以自动扩容resize(),但是最大容量为MAXIMUM_CAPACITY==2^30
- HashMap 底层数组即 + 链表/红黑树 实现
参考
https://blog.csdn.net/ns_code/article/details/36034955
https://github.com/zxiaofan/JDK/blob/master/JDK1.8/src/java/util/HashMap.java