Java的容器源码详解(Java数据结构)
本文主要介绍java collection framework,不仅会说轮子怎么用,还介绍了轮子的底层实现,让大家感受到数据结构的底层思想,以便于在实际应用中更好的解决问题。
过道
不断思考,不断进步,不断分享,希望可以帮助到像我一样迷茫的人,也希望你认真对待每一点知识的积累。
展开
-
ArrayList源码详解
文章目录List分析List接口所有代码List核心代码AbstractList:减少实现List所需精力ArrayList源码解析ArrayList的知识ArrayList的内部结构ArrayList的初始化ArrayList的改操作ArrayList的查询元素ArrayList 删除元素ArrayList的增加ArrayList实现Collection中的一些必要方法ArrayList全部代码...原创 2019-05-31 08:56:41 · 484 阅读 · 0 评论 -
数据结构---------树详解,java语言描述
文章目录二叉树1.常用的二叉树概念1. 满二叉树2. 完美二叉树2. 二叉树的两种物理存储.3.二叉树的应用2.自平衡树4. 二叉树的遍历5. 二叉堆二叉堆的自我调整堆的代码: 二叉树 在计算机中,常常需要用到树状存储关系,比如,家族树,企业管理树等。 其中,最常用的便是二叉树了,二叉树的定义:树的每个节点最多只有两个孩子节点。(阿里二面曾考察过) 其中最有名的有两个概念: 满二...原创 2019-05-29 12:11:33 · 886 阅读 · 0 评论 -
ArrayList、LinkedList、Vector的区别。
LinkedList与其他二者的区别 首先,LinkedList是相对于其他两个最大不同的,因为底层实现就完全不是一种思路。 ArrayList,Vector 的底层实现是扩容数组,而LinkedList的底层实现是双向链表。具体源码解析请看我的这篇博客: ArrayList和LinkedList的源码解析 tip:由于LinkedList 是双向链表,可以用来代替过时的Stack类. ...原创 2018-09-04 09:37:50 · 175 阅读 · 0 评论 -
线性表ArrayList和LinkedList源码详解。
List 描述 线性表抽象接口,所有线性表应该在实现这个接口的基础上进行操作。 接口 package list; /** * Description: 线性表的接口,使用泛型保证类型 * * @ClassName: List * @author 过道 * @date 2018年8月13日 上午10:45:13 */ public interface ListInterfac...原创 2018-08-31 09:41:47 · 393 阅读 · 0 评论 -
选择排序,插入排序,冒泡排序超简单教程(能有效的区分)。Java语言描述
首先,我相信一个东西最重要的是思想,所以,本文重点关注这三个排序背后的思想。希望能帮你理解并分清这四个排序。 注:n代表一组数的个数. i 代表任意的某个数( 0 < i < n + 1). 使用从小到大,从前到后的排序。(实际中,顺序完全可以相反,此时为了教学方便) 前修知识:时间复杂度。 数组下标从0开始。如何交换两个数。 目录 1.选择排序 1.1 用具体...原创 2018-03-08 20:24:36 · 1551 阅读 · 0 评论 -
归并排序详解,Java版描述。
为了简单起见,使用int类型数组讲述归并算法,后面扩展到其他类型的排序。 目录 1.2 排序思想 1.3 见名知意 1.4 抽象过程 1.5 实例操作 1.6 代码实现(JAVA版本) 1.6.1调用排序部分 1.6.2递归实体 1.6.3合并两个数组 1.7 代码实现(C语言版) 1.8 算法分析 1.9全部源码 1.1 用具体例子说明 十人排序问题。 将十人均分...原创 2018-08-11 14:53:27 · 3851 阅读 · 1 评论 -
快速排序详解 ------------Java语言描述
1.1 用具体例子说明 十人排序问题: 你先吆喝一声,比第一个人低的所有人都站在第一名前面,其余人站后面 然后队伍就被你分成了两个部分,而且原来队伍的第一名的位置将被确定为切割点,不再改动。 对于前面的队伍,你进行如下操作 你先吆喝一声,比第一个人低的所有人都站在第一名前面,其余人站后面 然后队伍就被你分成了两个部分,而且原来队伍的第一名的位置将被确定为切割点,不再改动。 对...原创 2018-08-12 20:35:34 · 495 阅读 · 0 评论 -
双端队列,java语言描述并带类库分析.
从接口到实现,帮读者有效理解java类库中的双向队列和优先队列,窥探底层的内部,帮助锻炼思维。轮子可以不会造,但会的话一定更好。原创 2018-08-14 11:18:14 · 206 阅读 · 0 评论 -
数据结构:“包”的学习与数组实现和链式实现,java语言描述。
前言 包是一个抽象数据类型,许多java数据结构书籍都拿其当做入门数据结构(如:《算法(第四版)》,《数据结构与抽象(JAVA语言描述)》等)。阅读此篇文章需要java基础知识(简单语法,泛型及基本类库的使用) 定义: 包这一抽象概念与生活中的包极其类似,允许其中放入重复的事物,而且我们不关心其中的次序。 // 简单说,就是可重复,不关心顺序。 注:常用的 foreach 中就隐含着包...原创 2018-08-08 19:46:08 · 405 阅读 · 0 评论 -
队列的链式实现和循环数组实现-----------------------------java语言描述
Java有经典的链式队列,循环队列,也有高级应用常使用的双向队列,优先队列。本文从低级实现介绍到java类库中的相关队列。 队列的接口 如下所示: public interface QueueInterface <T>{ //所有队列的实现必须实现这个接口 public void enqueue(T newEntry); public T dequeu...原创 2018-08-13 15:48:07 · 304 阅读 · 0 评论