JDK1.7-HashMap原理

JDK1.7 HashMap

JAVA技术交流群:737698533

如何在源码上添加自己的注释

打开jdk下载位置

JDK1.7-HashMap原理

解压src文件夹,打开idea, ctrl+shift+alt+s打开项目配置

JDK1.7-HashMap原理

选择jdk版本1.7,然后点击Sourcepath

JDK1.7-HashMap原理

选择刚刚解压的src文件目录,然后选择src.zip的文件点击 - 号,项目中只留下刚才解压的src文件即可

JDK1.7-HashMap原理

打开源码,输入时会出一个提示框,直接点击ok即可,然后就可以输入自己的注释了

JDK1.7-HashMap原理

在开始前先了解一下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原理

JDK1.7的数据结构就是如下图所示

JDK1.7-HashMap原理

在开始前建议自己跟着打开对应的类,方法来自己看一看源码,不然很容易就不知道在哪里了

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球