自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 HasMap之remove详解(一)

文章目录1. 导读2. HashMap::removeNode3. 红黑树删除节点 1. 导读 本期分享的是本人对于HashMap::remove的理解以及红黑树删除知识准备, 主要是围绕: .1 removeNode; .2 红黑树删除节点; 这两块内容来展开的; 2. HashMap::removeNode 我们先来看下HashMap::remove(JAVA8)的主流程: HashMap...

2019-01-31 17:16:35 2002

原创 HashMap之put详解(二)

文章目录1. 导读2. 什么是红黑树3. 左旋与右旋4. HashMap红黑树的再平衡5. HashMap.TreeNode::moveRootToFront 1. 导读 本次主要分享HashMap中红黑树插入后再平衡的过程, 主要内容如下: .1 什么是红黑树; .2 左旋与右旋; .3 HashMap红黑树的再平衡过程; 2. 什么是红黑树 为后面内容做铺垫(如果对此部分内容熟悉可直接跳过),...

2019-01-30 11:50:26 553

原创 HashMap之put详解(一)

文章目录1. 导读2. HashMap::put源码解析3. 红黑树的插入4. 链表转红黑树 1. 导读 这次的分享是关于HashMap::put, 主要是围绕下面几个方面展开: .1 HashMap::put源码解析; .2 红黑树插入的处理; .3 红黑树与链表的互转; 2. HashMap::put源码解析 因为HashMap::put的源码较长, 用下面的流程图来替代: 下面我们一步步来...

2019-01-29 16:53:23 1690

原创 HashMap之get方法详解

1. 导读 本章节面相的是对红黑树有了解的读者, 因为JAVA引入了黑红树, 所以后面的内容中主要围绕着红黑树来展开; .1 get .2 find 2. get HashMap::get返回一个数据节点, 如果不存在则返回空; final Node<K,V> getNode(int hash, Object key) { Node<K,V>[] t...

2019-01-29 11:24:26 36180 5

原创 HashMap之resize详解

文章目录1. 导读2. HashMap为什么要扩容3. HashMap何时扩容3. 为什么是0.754. HashMap如何扩容5. JDK8对JDK7的优化 1. 导读 上期分享了HashMap的key定位以及数据节点的设计, 本期就下面三个问题来分享下个人对于HashMap扩容的理解: .1 HashMap为什么要扩容? 何时扩容? .2 负载因子为什么是0.75? .3 HashMap如何扩...

2019-01-28 15:31:30 18719 16

原创 Java基础之HashMap(二)

1. 导读 经过上期的分享, 相信大家对HashMap已经有了个初步的印象, 今天将围绕下面几个问题展开: .1 HashMap的数据结构在java中是如何设计的; .2 HashMap序列化的问题; 2. hash槽长度的确定 我们将围绕下面HashMap的数据结构和关键代码来看HashMap的设计: /** * The default initial capacity - ...

2019-01-27 17:51:03 797 1

原创 Java基础之HashMap(一)

1. 导读 今天分享的是不管是日常使用还是面试频率都很高的HashMap, 下面我就下面三个方面来分享个人对HashMap的理解: .1 常用的hash算法以及解决冲突的方式; .2 HashMap的数据结构是什么? 是怎么解决冲突的? .3 HashMap::hash做了什么, 为什么这么做? 2. 常用的hash算法以及解决冲突的方式 2.1 hash: 意为散列, 但大多直接音译叫做哈希; ...

2019-01-27 15:59:33 540 1

原创 Java基础之神奇的包装类(二)

文章目录1. 导读2. IntegerCache3. 为什么是[-128, 127]4. 自动拆装箱5. 为什么 == 和 equals 判断会有不同; 1. 导读 上期分享了个人对于包装类的一些理解, 这期还是围绕着下面三个问题来展开: .1 IntegerCache做了什么? 为什么需要IntegerCache? .2 自动拆装箱; .3 为什么 == 和 equals的结果有时候相同, 有时...

2019-01-26 21:57:12 298 1

原创 Java基础之神奇的包装类(一)

文章目录1. 导读2. 什么包装类3. 为什么需要包装类4. 包装类干了什么 1. 导读 JAVA中针对八种基本数据类型提供了相对应的包装类, 今天主要基于几个问题来分享下个人对于包装类的理解, 本期先分享下面两个问题: .1 什么是包装类? 有了基本类型, 为什么还需要有包装类; .2 包装类干了什么? 2. 什么包装类 众所周知, JAVA提供了八种基本类型, 同时也对这八种基本类型做了相应的...

2019-01-25 19:39:56 314

原创 Java基础之String漫谈(三)

文章目录1. 导读2. JVM内存模型的简介3. String::intern4. String::intern的利弊 1. 导读 这期主要分享下String的常量池以及intern方法的使用; 2. JVM内存模型的简介 在介绍String的常量池之前, 先插播下JVM的内存模型, 以便能更好地理解后面的内容; 这是一张经典的JVM运行时内存管理图(基于JAVA SE 8), 而我们...

2019-01-25 14:09:57 297

原创 Java基础之String漫谈(二)

1. 导读 上期分享了本人关于String四个问题, 本期我们继续探讨String中的两个问题: .1 String既然已经实现了Comparable接口, 为什么还要提供内部类----CaseInsensitiveComparator; .2 使用 “+” 拼接String究竟干了什么? 为什么在循环中不让使用"+"拼接String; 2. String为什么要提供内部类CaseInsensit...

2019-01-25 09:50:36 230

原创 java基础之String漫谈(一)

1. 导读 String类也是日常开发中经常用到的类, 今天主要分享下我在看String源码时想到的4个问题: 1.1 String为什么是不可变的; 为什么要设计成不可变的; 1.2 hashCode; 为什么是31; 2. String为什么是不可变的; public final class String implements java.io.Serializable, Com...

2019-01-25 09:47:22 218

原创 java基础之Object类解析(二)

1. 导读 接上一篇的分享, 我们一起看一下Object类中剩余的6个方法: 1.1 toString(); 1.2 notify(); 1.3 notifyAll(); 1.4 wait(); 1.5 finalize(); 1.6 registerNatives(); 2. toString方法 toString方法是我们比较常用的方法, 在Object中的默认实现返回一个 类名+’@’+ha...

2019-01-25 09:44:31 261

原创 java基础之Object类解析(一)

1. 导读 java中每新增一个类, 他的父类都是Object类, 那么Object类中的方法都会被子类继承, 今天主要来看看Object中下面5个方法; 1.1 getClass(); 1.2 hashCode(); 1.3 equals(); 1.4 clone(); 1.5 toString(); 2. getClass方法 getClass()方法是用来获取运行时的对象; 当声明对象和.c...

2019-01-25 09:39:55 559

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除