HashMap简介
HashMap是一个散列表,存储的是key-value对,线程不安全,key和value可以为null,其映射不是有序的。
两个参数:“初始容量”,“加载因子”。容量是哈希表中桶的数量,初始容量是哈希表创建时的容量。加载因子是哈希表在其容量自动增加前可以达到多满的一种尺度。
构造函数
//指定“容量大小”
HashMap(int capacity)
//指定两个参数
HashMap(int capacity, float loadFactor)
//包含“子Map”
HashMap(Map<? extends K, ? extends V> map)
API
void clear()
Object clone()
boolean containsKey(Object key)
boolean containsValue(Object value)
Set<Entry<K, V>> entrySet()
V get(Object key)
boolean isEmpty()
Set<K> keySet()
V put(K key, V value)
void putAll(Map<? extends K, ? extends V> map)
V remove(Object key)
int size()
Collection<V> values()
继承关系
java.lang.Object
↳ java.util.AbstractMap<K, V>
↳ java.util.HashMap<K, V>
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable { }
HashMap继承于AbstractMap类,实现Map接口;HashMap成员·变量:table,size,threshhold,loadFactor,modCount。
table是Entry[]数组类型,Entry实际是单向链表,哈希表的key-value对都存储在Entry数组中。
size是HashMap保存的键值对的数量。
threshhold用于判断是否需要调整HashMap容量,threshhold=loadfactor*capacity,达到阈值时容量加倍。
loadfactor加载因子。
modCount实现fail-fast机制(快速失败)。