二叉树的创建以及它的遍历过程

相比数组和链表,二叉树是一种比较独特的数据结构,对于二叉树的一些概念和规律的内容,这里就不多描述和证明了,本篇主要来看下二叉树的构造过程以及几种遍历过程。

Read More

HashMap 源码分析(一)

HashMap 被设计成专门用来存储键值对(key-value)形式的数据,每一个元素都是一个 Entry<K,V> 节点;它底层的数据结构是哈希表,它是一个数组,同时也是一个链表,简单来说,就是根据节点的 key 的 hash 值,来决定该元素存放在数组的位置,hash 值相同,则在该位置后面以链表的形式存储元素,本文简单分析下 HashMap 的源码,基于 JDK 1.8 。

Read More

基于 LinkedList 的队列的源码分析

队列是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。插入的一段称之为队尾,删除的一段称之为队头。之前分析过 LinkedList 的时候就提到,它是一种链式结构,同时还是一个队列,所以,这篇分析其实很简单了,都是基于之前分析过的的插入删除的方法。

Read More

基于 Vector 的栈的源码分析

栈也是线性表,但是限定仅在表尾进行插入和删除操作的线性表;做过 Android 的应该知道,Activity 是一个典型的栈结构,它的特点就是后进先出;Stack 的源码很少,因为它的父亲 Vector 都帮它做好了,所以本篇分析主要集中在 Vector 里。

Read More

LinkedList 链表的源码分析

LinkedList 内部采用的是链表的方式存储数据,所以不像 ArrayList ,初始化时需要分配容量,该链表中每一个节点都有一个头指针、一个数据域、一个尾指针,所以是一个双向的链表,与双向循环链表不同,它的第一个节点和最后一个节点没有互相引用,所以 LinkedList 其实还是一个队列,这个作为下下篇分享的内容,本篇主要分析其数据元素的增删改查的源码,基于 JDK 1.8 版本的源码分析。

Read More

ArrayList 源码分析

ArrayList 内部采用数组实现,是一种顺序存储方式,对于它的用法,相信大家都烂熟于心了,但是对它内部数组空间的动态管理,也许还不是很熟悉,所以我这次打算分析一下 ArrayList 的源码,基于 JDK 1.8 的版本。

Read More