HashMap超全源码详解(JDK1.8)

1、HashMap简介

HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。JDK1.8版本中其数据结构是:数组+链表+红黑树的形式。下面详解源码及解决的问题。

2、HashMap类

public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable 

接口方法:

  • put方法(新增 )
  • resize方法(扩容 )
  • get方法(遍历)
  • remove方法(删除)
  • treeifyBin方法(链表树化)
  • untreeify方法(红黑树转链)

成员变量:

  • table变量:HashMap的底层是Node类的实体数组,Node是一个静态内部类,一种数组和链表相结合的复合结构,用于保存key-value对;
  • size变量:表示已存储的HashMap的key-value对的数量;
  • loadFactor变量:装载因子,默认值为0.75f(DEFAULT_LOAD_FACTOR = 0.75f;);
  • threshold变量:临界值,超过此值hashmap自动扩容,threshold=容量*加载因子;
  • capacity:容量,非成员变量,默认值是16;

3、HashMap方法详解

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值