java.util.HashMap源码学习(二)

本文详细介绍了HashMap中的关键方法,包括put、get、resize等,并解释了这些方法如何工作以实现高效的数据存储和检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值