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