HashMap中重要的方法:
1. public V put(K key, V value)
HashMap中允许key为null,当key为null时,调用private V putForNullKey(V value)把对应的Entry放到table[0]位置。如果key不为null,利用key计算hash码,从而得到对应的table下标,如果Entry<K,V> e = table[i]已经存在,则更新e.value,如果Entry<K,V> e = table[i]不存在,modCount加1,记录结构变化,调用void addEntry(int hash, K key, V value, int bucketIndex)增加新的Entry。
2. public V get(Object key)
当key为null时,调用private V getForNullKey(),从table[0]取出Entry得到对应key==null的value。如果key不为null,则根据hash码快不跳到数组的某个位置,只对很少的元素进行比较,这就是HashMap速度很快的原因。
3. void resize(int newCapacity)
根据指定的newCapacity值调整table的大小
4. void transfer(Entry[] newTable)
将当前table中的内容转移到新的newTable中
5. public void putAll(Map<? extends K, ? extends V> m)
将指定的map复制到当前map中。如果指定的map的大小超过当前map的阈值时,会调用resize()方法调整table的大小。
6. public V remove(Object key)
从当前hashMap中删除指定的key。
7. public void clear()
清空当前hashmap
8. public boolean containsKey(Object key)
是否存在指定key
9. public boolean containsValue(Object value)
是否存在指定的值
10. public boolean isEmpty()
是否为空
11. public int size()
当前hashmap的大小
1. public V put(K key, V value)
HashMap中允许key为null,当key为null时,调用private V putForNullKey(V value)把对应的Entry放到table[0]位置。如果key不为null,利用key计算hash码,从而得到对应的table下标,如果Entry<K,V> e = table[i]已经存在,则更新e.value,如果Entry<K,V> e = table[i]不存在,modCount加1,记录结构变化,调用void addEntry(int hash, K key, V value, int bucketIndex)增加新的Entry。
2. public V get(Object key)
当key为null时,调用private V getForNullKey(),从table[0]取出Entry得到对应key==null的value。如果key不为null,则根据hash码快不跳到数组的某个位置,只对很少的元素进行比较,这就是HashMap速度很快的原因。
3. void resize(int newCapacity)
根据指定的newCapacity值调整table的大小
4. void transfer(Entry[] newTable)
将当前table中的内容转移到新的newTable中
5. public void putAll(Map<? extends K, ? extends V> m)
将指定的map复制到当前map中。如果指定的map的大小超过当前map的阈值时,会调用resize()方法调整table的大小。
6. public V remove(Object key)
从当前hashMap中删除指定的key。
7. public void clear()
清空当前hashmap
8. public boolean containsKey(Object key)
是否存在指定key
9. public boolean containsValue(Object value)
是否存在指定的值
10. public boolean isEmpty()
是否为空
11. public int size()
当前hashmap的大小