Java集合框架
瘦子没有夏天
大家好,我是Leon。一个专业与Java领域的程序员,偶尔理理财。欢迎大家来阅读我博客,如果你发现极个别文章和书籍内容雷同,请叫我勤奋的code搬运工٩(๑❛ᴗ❛๑)۶。我的邮箱:gyoomi0709@foxmail.com
展开
-
List之ArrayList源码实现
一、引言 1.导语 集合是Java重要且非常基础的东西,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织、存储数据。所以说研究其底层源代码是一个程序员的必修课。 2.要点 要点 说明 是否可以为空 无 是否有序 无 是否可以重复 无 是否线程安全 无 只要在学习集合源码的时候的时...原创 2018-08-31 23:27:25 · 2659 阅读 · 0 评论 -
List之LinkedList源码实现
一、引言 1.概念 LinkedList是基于链表实现的,所以先讲解一下什么是链表。链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据以外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有些存储结构还存放有其前一个存储单元的地址),每次查找数据的时候,通过某个存储单元中的下一个存储单元的地址寻...原创 2018-09-02 16:25:15 · 9326 阅读 · 14 评论 -
Map之HashMap源码实现
一、引言 1.导语 在此之前学习HashMap之前,我们首先对先前学习的List进行总结一些: 类型 说明 ArrayList 底层是数组,顺序插入。查询快、增删慢 LinkedList 底层是链表,顺序插入。查询慢、增删块 但是这样的集合我们还是不满意啊,有没有查询块,增删也快的集合,那 就是我们今天要学习的HashMap。 2.要点 要点 说明 ...原创 2018-10-15 14:25:53 · 432 阅读 · 0 评论 -
树、二叉树、二分搜索树的解读
一、导语 二、树及二叉树 1.树结构图示 2.树的一些基本概念 1、结点:树中的数据元素都称之为结点 2、根:最上面的结点称之为根,一颗树只有一个根且由根发展而来,从另外一个角度来说,每个结点都可以认为是其子树的根 3、父亲:结点的上层结点 4、兄弟:具有相同父亲的结点称为兄弟 5、结点的度:结点所拥有的子树的个数称之为结点的度 6、树叶:度为0的结点,也叫作终端结点 7、分支结点:度不为0的...原创 2018-10-22 22:25:38 · 1417 阅读 · 0 评论 -
Map之LinkedHashMap源码实现
一、引言 1.回顾 1.1 HashMap的是怎么保证添加的元素的索引的(也就是说哈希桶是如何分布的)? 首先通过hash()方法:实现高位和低位进行充分位运算;然后通过 “table的长度” & “hash值”,计算得出其bucket值。 1.2 HashMap的扩容的流程是怎么样的? 把resize()的各种情况梳理一遍。值得注意的是:HashMap的的初始化操作也移到了resi...原创 2018-10-23 22:37:15 · 2087 阅读 · 1 评论 -
Comparator和Comparable的详解
一、引言 之前在一次机试时候,考察到了Java中比较。但是答得不是很好,加之最近在学习二叉树、红黑数这些,更不离不开比较、排序,所以在这里把Java中的比较好好总结下。 二、Comparable 1. 介绍 Comparable是一个接口,是一个内比较器(至于为什么说是内比较器,在第四节就会讲到这块)。简单来说,实现了Comparable接口的类可以实现自己和自己比较了。而具体的比较规则依赖于co...原创 2018-10-24 17:01:46 · 696 阅读 · 0 评论 -
并发容器之ConcurrentHashMap源码实现
并发容器之ConcurrentHashMap源码实现 一、背景 其实这一小节主要内容可以换一种说法:“为什么要使用ConcurrentHashMap,而非HashMap?尤其是在多线程环境下?” 其实我简单总结了以下三点原因,可以回答上述问题。此外声明下本文研究的源码版本以JDK1.7标准,其他版本的代码略有差异,尤其是JDK1.8 ,后面有时间在详细研究。 HashMap的线程不安全 在多线...原创 2019-05-31 15:14:24 · 292 阅读 · 0 评论 -
并发容器之CopyOnWriteArrayList源码实现
并发容器之CopyOnWriteArrayList源码实现 一、背景介绍 使用示例 public class TestCopyOnWriteArrayList { public static void main(String[] args) throws Exception { List<Integer> list = new CopyOnWriteArr...原创 2019-06-08 23:49:04 · 408 阅读 · 0 评论