- 博客(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
1960
原创 HashMap之put详解(二)
文章目录1. 导读2. 什么是红黑树3. 左旋与右旋4. HashMap红黑树的再平衡5. HashMap.TreeNode::moveRootToFront1. 导读本次主要分享HashMap中红黑树插入后再平衡的过程, 主要内容如下:.1 什么是红黑树;.2 左旋与右旋;.3 HashMap红黑树的再平衡过程;2. 什么是红黑树为后面内容做铺垫(如果对此部分内容熟悉可直接跳过),...
2019-01-30 11:50:26
513
原创 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
1629
原创 HashMap之get方法详解
1. 导读本章节面相的是对红黑树有了解的读者, 因为JAVA引入了黑红树, 所以后面的内容中主要围绕着红黑树来展开;.1 get.2 find2. getHashMap::get返回一个数据节点, 如果不存在则返回空; final Node<K,V> getNode(int hash, Object key) { Node<K,V>[] t...
2019-01-29 11:24:26
36088
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
18642
16
原创 Java基础之HashMap(二)
1. 导读经过上期的分享, 相信大家对HashMap已经有了个初步的印象, 今天将围绕下面几个问题展开:.1 HashMap的数据结构在java中是如何设计的;.2 HashMap序列化的问题;2. hash槽长度的确定我们将围绕下面HashMap的数据结构和关键代码来看HashMap的设计: /** * The default initial capacity - ...
2019-01-27 17:51:03
748
1
原创 Java基础之HashMap(一)
1. 导读今天分享的是不管是日常使用还是面试频率都很高的HashMap, 下面我就下面三个方面来分享个人对HashMap的理解:.1 常用的hash算法以及解决冲突的方式;.2 HashMap的数据结构是什么? 是怎么解决冲突的?.3 HashMap::hash做了什么, 为什么这么做?2. 常用的hash算法以及解决冲突的方式2.1 hash: 意为散列, 但大多直接音译叫做哈希; ...
2019-01-27 15:59:33
488
1
原创 Java基础之神奇的包装类(二)
文章目录1. 导读2. IntegerCache3. 为什么是[-128, 127]4. 自动拆装箱5. 为什么 == 和 equals 判断会有不同;1. 导读上期分享了个人对于包装类的一些理解, 这期还是围绕着下面三个问题来展开:.1 IntegerCache做了什么? 为什么需要IntegerCache?.2 自动拆装箱;.3 为什么 == 和 equals的结果有时候相同, 有时...
2019-01-26 21:57:12
266
1
原创 Java基础之神奇的包装类(一)
文章目录1. 导读2. 什么包装类3. 为什么需要包装类4. 包装类干了什么1. 导读JAVA中针对八种基本数据类型提供了相对应的包装类, 今天主要基于几个问题来分享下个人对于包装类的理解, 本期先分享下面两个问题:.1 什么是包装类? 有了基本类型, 为什么还需要有包装类;.2 包装类干了什么?2. 什么包装类众所周知, JAVA提供了八种基本类型, 同时也对这八种基本类型做了相应的...
2019-01-25 19:39:56
282
原创 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
270
原创 Java基础之String漫谈(二)
1. 导读上期分享了本人关于String四个问题, 本期我们继续探讨String中的两个问题:.1 String既然已经实现了Comparable接口, 为什么还要提供内部类----CaseInsensitiveComparator;.2 使用 “+” 拼接String究竟干了什么? 为什么在循环中不让使用"+"拼接String;2. String为什么要提供内部类CaseInsensit...
2019-01-25 09:50:36
162
原创 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
190
原创 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
232
原创 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
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人