JDK1.7 HashMap
JAVA技术交流群:737698533
如何在源码上添加自己的注释
打开jdk下载位置
解压src文件夹,打开idea, ctrl+shift+alt+s
打开项目配置
选择jdk版本1.7,然后点击Sourcepath
选择刚刚解压的src文件目录,然后选择src.zip的文件点击 -
号,项目中只留下刚才解压的src文件即可
打开源码,输入时会出一个提示框,直接点击ok即可,然后就可以输入自己的注释了
在开始前先了解一下JDK1.7的HashMap的数据结构,就算没有研究过源码也听过JDK1.7中HashMap是数组加链表,1.8中是数组加链表加红黑树,今天我们主要研究1.7,首先数组肯定都知道,链表这个一听以为是很难的东西,其实一点也不难
什么叫链表呢,以java代码形式
假设现在有一个节点,里有具体的值和下一个节点的引用
public class Node{
private int number;
private Node next;
}
当节点的next引用指向下一个Node节点,许多的节点连接起来就叫做链表
JDK1.7的数据结构就是如下图所示
在开始前建议自己跟着打开对应的类,方法来自己看一看源码,不然很容易就不知道在哪里了
HashMap中的全局变量
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
static final int MAXIMUM_CAPACITY = 1 << 30;
static final float DEFAULT_LOAD_FACTOR = 0.75f;
static final Entry[] EMPTY_TABLE = {};
transient Entry[] table = (Entry[]) EMPTY_TABLE;
transient int size;
int threshold;
final float loadFactor;
transient int modCount;
我们来看一下全局变量,简单描述一下它们的作用
DEFAULT_INITIAL_CAPACITY
默认的初始容量,而大小使用了一个左移运算符,怎么来看它的值呢?java中所有的位运算都是在二进制的情况下进行的
首先1的二进制是 0000 0001 而<< 4 符号的意思是将所有的数字往左边移动4位,移出来的位置用0替换
也就是 0001 0000 转换为10进制就是16,也就是HashMap的默认容量
MAXIMUM_CAPACITY
最大容量,也是使用位运算符,1<
Original: https://www.cnblogs.com/sunankang/p/14278837.html
Author: Jame!
Title: JDK1.7-HashMap原理
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/620546/
转载文章受原作者版权保护。转载请注明原作者出处!