Java数据结构
文章平均质量分 67
Flying`
这个作者很懒,什么都没留下…
展开
-
【浅学Java】哈希桶的模拟实现以及HashMap原码分析
开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。从上图可以看出,开散列中每个桶中放的都是发生哈希冲突的元素测试1这里的测试属于是常规测试在这个测试中,重写了 Students 类 的equals和hashcode方法重写equals方法:使在id和name相同的情况下,判定为相同重写hashcode方法:使id和name相同的情况下,形成相同原创 2022-07-04 20:51:58 · 459 阅读 · 1 评论 -
【浅学Java数据结构】排序大全
当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移4. 希尔排序希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组原创 2022-06-28 12:09:22 · 559 阅读 · 1 评论 -
【浅学Java数据结构】二叉搜索树
二叉搜索树又称二叉排序树,它是一棵空树 或者 具有以下性质的二叉树:例如:注意:插入的位置一定是搜索二叉树的根节点设待删除的结点为 cur ,待删除结点的双亲结点为 parentBinarySearchTree:Test:...原创 2022-07-01 00:10:35 · 183 阅读 · 0 评论 -
【浅学Java数据结构】对象的比较
对象的比较1. PriorityQueue中插入对象时的问题2. 对象的比较2.1 覆写基类的equals2.2 基于Comparble接口类的比较2.3 基于比较器比较3. 三种比较方式的对比4. 解决PriorityQueue中插入对象方法1. 利用Comparble接口方法2. 使用比较强对象1. PriorityQueue中插入对象时的问题优先级队列在插入元素时有个要求:插入的元素不能是null或者元素之间必须要能够进行比较,那么当优先级队列插入自定义对象时,需要怎么处理呢?看一下代码,它能够原创 2022-05-31 11:05:46 · 176 阅读 · 1 评论 -
【浅学Java数据结构】 优先级队列以及堆的创建、插入、删除
优先级队列 (PriorityQueue)1. 优先级队列1.1 概念2. 优先级队列的模拟实现2.1 堆的概念2.2 堆的存储方式3. 堆的创建3.1 堆的向下调整3.2 建堆的时间复杂度4. 堆的插入和删除4.1 堆的插入4.2 堆的删除5. 用堆模拟优先级队列6. 常用接口介绍6.1 PriorityQueue的特性6.2 PriorityQueue常用接口介绍7. 优先级队列的应用1. 优先级队列1.1 概念前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数原创 2022-05-30 18:24:19 · 1775 阅读 · 0 评论 -
【浅学Java数据结构】二叉树
二叉树1. 二叉树的概念2. 两种特殊的二叉树2.1. 满二叉树2.2. 完全二叉树3. 二叉树的性质4. 二叉树的存储5. 二叉树的遍历1. 二叉树的概念一棵二叉树是一个有限集合,该集合:或者为空或者由一个根节点加上两棵左子树和右子树组成从上图可以看出:二叉树不存在度大于2的结点二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树注意:对于任意的二叉树都是由以下几种情况复合而成的:2. 两种特殊的二叉树2.1. 满二叉树满二叉树: 一棵二叉树,如果每层的结点数都达到原创 2022-05-26 22:47:36 · 187 阅读 · 0 评论 -
【浅学Java数据结构】栈以及栈的应用
栈以及栈的应用1. 什么是栈2. 栈的使用3. 栈的应用3.1 将递归转换为循环——链表打印3.2 括号匹配3.3 逆波兰表达式求值3.4 栈的压入、弹出序列1. 什么是栈栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。2. 栈的使用代码演示:pu原创 2022-05-11 16:42:21 · 250 阅读 · 0 评论 -
【浅学Java数据结构】链表的基本使用
原创 2022-05-10 20:21:06 · 229 阅读 · 0 评论 -
【浅学Java数据结构】简单模拟实现双向链表
模拟实现:public class DoubleLinkedList { static class ListNode{ int data; ListNode next; ListNode prev; public ListNode(int val){ this.data=val; this.next=null; this.prev=null; }原创 2022-05-10 16:17:27 · 614 阅读 · 1 评论 -
【浅学Java数据结构】简单模拟实现LinkedList
下面,我们以无头单向链表为例,模拟实现链表:public class MyLinkedList { static class ListNode{ int data; ListNode next; public ListNode(int val){ this.data=val; this.next=null; } } public ListNode head; /原创 2022-05-10 16:13:46 · 196 阅读 · 0 评论 -
【浅学Java数据结构】ArrayList的基本操作以及ArrayList的扩容机制简要分析
ArrayList1. ArrayList的构造方法2. ArrayList中基本的常用操作有:3. ArrayList的遍历4. ArrayList的扩容机制中的问题1. ArrayList的构造方法public static void main(String[] args) { //创建一个空的列表 List<Integer> list1= new ArrayList<>(); for(int i=0;i<10;i++)原创 2022-04-26 22:22:57 · 593 阅读 · 1 评论 -
【浅学Java数据结构】简单模拟实现 ArrayList(顺序表)
想要用好Java中的提供的ArrayList,你就得十分熟悉ArrayList的原理,通过模拟实现ArrayList,就可以为以后阅读ArrayList源码打下基础,从而为熟悉ArrayList底层原理打下基础。下面我们先来简单分析一下以下接口的实现细节:public class MyArrayList { public int []elem;//设置数组 public int usedSize;//设置下标 private static final int DEFAULT_SI原创 2022-04-26 22:21:57 · 509 阅读 · 1 评论 -
【浅学Java数据结构】一篇文章带你走进Java泛型的世界
走进Java泛型1. 什么是泛型?2. 引出泛型3. 泛型的语法4. 泛型小结:5. 泛型是如何编译的?6. 泛型的上界7. 泛型方法8. 通配符通配符的上界通配符的下界9. 包装类9.1 基本数据类型和对应的包装类9.2 装箱和拆箱9.3 一道例题1. 什么是泛型?泛型就是适用于许多许多类型。从代码上讲就是对类型实现了参数化。(听完这句话,是不是很懵,不着急,我们接着往下看)2. 引出泛型下面,我们来思考一个问题:如何实现一个类,类中包含数组成员,使得数组中能够存放任何类型的数据,也可以根据成原创 2022-04-24 12:48:12 · 633 阅读 · 1 评论