之前看过hashmap源码,感觉最近有些遗忘,写一波复习一遍,首先查看hashmap的继承体系,可以发现hashMap实现了map,cloneble,serializable接口这些接口应该都很熟悉了吧,其次hashmap继承自abstractmap查看这个父类,发现他是一个抽象类,因此其中有些方法是可以复写的,具体方法查看源码可以发现包括entrySet其他方法可以看做map这种数据结构都通用的方法。
接下来看下hashmap重要属性,我们从前到后依次查看第一个是
private static final long serialVersionUID = 362498820763181265L;
这个是关于类序列化的,如果忘了,可以查看具体知识
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
hashmap的默认初始化容量,说的通俗点就是你创建了hashmap之后,初始情况下的容量,这里用了位运算十进制为16,之所以这样这样子运算速度较快
static final int MAXIMUM_CAPACITY = 1 << 30;
这是hashmap的最大容量,就是你创建的hashmap最多只能这么大,超过这么大系统可能就不能创建了,至于这个值也是用的位运算,结果是2的30次方具体多少赶你兴趣的可以去计算计算。
static final float DEFAULT_LOAD_FACTOR = 0.75f;
下一个float类型答案是0.75.行话说的是反应当前hashmap满的程度,感觉说的还是让初次接触的人云里雾里的,其实说白了可以这么认为不是你hashmap创建以后有一个默认长度吗,就拿16来说,
接下来看下hashmap重要属性,我们从前到后依次查看第一个是
private static final long serialVersionUID = 362498820763181265L;
这个是关于类序列化的,如果忘了,可以查看具体知识
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
hashmap的默认初始化容量,说的通俗点就是你创建了hashmap之后,初始情况下的容量,这里用了位运算十进制为16,之所以这样这样子运算速度较快
static final int MAXIMUM_CAPACITY = 1 << 30;
这是hashmap的最大容量,就是你创建的hashmap最多只能这么大,超过这么大系统可能就不能创建了,至于这个值也是用的位运算,结果是2的30次方具体多少赶你兴趣的可以去计算计算。
static final float DEFAULT_LOAD_FACTOR = 0.75f;
下一个float类型答案是0.75.行话说的是反应当前hashmap满的程度,感觉说的还是让初次接触的人云里雾里的,其实说白了可以这么认为不是你hashmap创建以后有一个默认长度吗,就拿16来说,