数据结构
呆某人
这个作者很懒,什么都没留下…
展开
-
深入理解HashMap底层原理
HashMap是开发过程中经常用到的数据结构,因为其key-value存储方式,方便了数据的存储与获取,但是一直都不知道其内部实现逻辑与底层原理,所以决定深入的学习一番。HashMap是哈希表(散列表),是较为重要的数据结构,因为本人平常使用的是jdk1.7,所以本文将会对jdk1.7的HashMap源码进行分析。一:哈希表定义我们先来看看数组和链表在新增和查询等操作方面的执行性能如何...原创 2018-08-14 18:11:30 · 642 阅读 · 0 评论 -
Stack源码解析
本章源码基于JDK1.7java中Stack数据结构是基于Vector实现的,所实现的方法较少,且都是线程安全的。package java.util;public class Stack<E> extends Vector<E> { private static final long serialVersionUID = 122446316454133...原创 2019-04-22 07:53:56 · 424 阅读 · 0 评论 -
二叉树的先序、中序、后序三种遍历
简介二叉树遍历根据节点顺序来分有三种方式:先序遍历、中序遍历、后序遍历。以上图二叉树为例,A是根节点,B是左节点,C是右节点。先序遍历:ABC(从根节点开始访问,然后从左节点到右节点),中序遍历:BAC(从左节点开始,然后访问根节点,最后访问右节点),后序遍历:BCA(从左节点开始然后优先访问同级的右节点最后访问根节点)接下来再来一个稍微复杂点的二叉树先序遍历:A...原创 2019-03-30 10:09:46 · 2091 阅读 · 0 评论 -
队列
队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列可以使用数组和链表这两种方式来实现,源码如下定义队列行为接口InterfaceQueue.java队列的几种行为都是确定的,不同的是底层如何实现,所以首先定...原创 2019-10-04 10:42:52 · 396 阅读 · 0 评论 -
栈
栈是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。它的一端是栈顶,另一端是栈底,元素唯一的进出口是栈顶,它的特点是先进栈的元素后出栈(先进后出);java中栈的实现有两种方式,数组和链表数组实现的栈底层由数组实现,通过操作数组来实现元素的存入和取出,使用top来标识栈顶元素位置。public class ArrayStack<E> { /...原创 2019-04-17 22:42:32 · 256 阅读 · 0 评论 -
String源码解析
本章源码分析基于JDK1.7实现的接口String类被final修饰词修饰,代表不可修改的特性,它实现了三个接口,Serializable是序列化接口,Compareble是排序接口,Char是字符序列接口。public final class String implements Serializable, Comparable<String>, CharSequence...原创 2020-11-15 11:58:35 · 4618 阅读 · 15 评论 -
LinkedList详解
本文基于jdk1.7进行分析。 LinkedList是双向链表结构,链表数据结构的特点是每个元素分配的空间不必连续、插入和删除元素时速度非常快、但访问元素的速度较慢。LinkedList继承了AbstractSequentialList<E>,实现了List<E>, Deque<E>, Cloneable, Serializable接口。publi...原创 2019-02-21 21:22:43 · 934 阅读 · 0 评论 -
HashSet解析
基于jdk1.7HashSet继承了AbstractSet,继承了Set、Cloneable、Serializable接口public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable成员变量之前我一直有记HashSet的特点:存...原创 2019-02-23 20:32:17 · 854 阅读 · 0 评论 -
ArrayList详解
本文基于jdk1.7进行分析。 ArrayList是一个非线程安全的有序集合类,它实现了List<E>, RandomAccess, Cloneable, Serializable接口,继承了AbstractList,类名上的泛型E代表ArrayList所存储的元素的类型。public class ArrayList<E> extends AbstractList...原创 2019-02-12 19:15:59 · 438 阅读 · 0 评论 -
java集合类总结
我自己日常开发过程中,常用的Java集合不多,一般也就是ArrayList、HashSet、HashMap,我感觉这些集合能够满足我的日常开发又或者我并没有使用更加合适的数据结构,所以开始逐个学习常用集合类。 图片大图:https://img-blog.csdnimg.cn/20181126152905113.png参考博客:https://www.cnblogs.com/meng...原创 2018-11-26 15:57:25 · 249 阅读 · 0 评论 -
二叉查找树
本章内容基于数据结构与算法分析 java语言描述(原书第3版)二叉查找树性质:对于树中的每个节点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项。所以二叉查找树要求所有的项都能够排序,在我实现的二叉查找树数据结构中,存储的元素均需实现比较器接口,实现其中的compareTo方法,这里我使用到Integer,它内部已经实现了compareTo方法。Binary...原创 2019-10-13 17:36:33 · 321 阅读 · 0 评论