JAVA数据结构
文章平均质量分 87
阿辉爱睡觉
️️️
展开
-
Map和Set
搜索概念及场景**Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。**以前常见的搜索方式有:直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢二分查找,时间复杂度为 ,但搜索前必须要求序列是有序的上述排序比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了,而现实中的查找比如 :根据姓名查询考试成绩通讯录,即根据姓名查询联系方式不重复集合,即需要先搜索关键字是否已经在集合中可能在查找时进行一些插入和删原创 2022-04-08 16:34:37 · 1181 阅读 · 0 评论 -
数据结构排序
排序的概念及引用排序概念**排序:**所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作**稳定性:**假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的**内部排序:**数据元素全部放在内存中的排序。**外部排序:**数据元素太多不能同时放在内存中,根据排序过程的要求原创 2022-04-07 23:36:13 · 84 阅读 · 0 评论 -
Java对象的比较
元素的比较基本类型的比较在Java中,基本类型的对象可以直接比较大小对象比较的问题class Card { public int rank; // 数值 public String suit; // 花色 public Card(int rank, String suit) { this.rank = rank; this.suit = suit; }}public class TestPriorityQueue { p原创 2022-04-05 22:17:42 · 494 阅读 · 0 评论 -
优先级队列(堆)
优先级队列概念前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。优先级队列的模拟实现JDK1.8中的PriorityQueue 底层使用了堆原创 2022-04-05 22:16:07 · 251 阅读 · 0 评论 -
Java二叉树
树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。有一个特殊的节点,称为根结点,根节点没有前驱结点。除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、…、Tm,其中每个集合Ti(1 <= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可有0个或多个后继。树是递归定义的。 子树不是相交的;除了根结点外,每个结点有且只有一个父结点;一颗N个结点的树有N-1条边;原创 2022-03-23 16:43:24 · 1388 阅读 · 0 评论 -
Java栈和队列
栈概念栈:一种特殊的线性表,其**只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶栈的使用方法功能Stack()构造一个空的栈E push(E e)将e入栈,并返回eE pop()将栈顶元素出栈并返回E peek()获取栈顶原创 2022-03-19 23:48:12 · 709 阅读 · 0 评论 -
LinkedList与链表
链表链表的概念及结构链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。注意: 1. 从上图可看出,链式结构在逻辑上连续的,但在物理上不一定连续现实中的结点一般都是在堆上申请出来的从堆上申请的空间,是按照一定策略来分配的,两次申请的空间可能连续可能不连续而链表的结构非常的多样:1.单向 或 双向2.带头或 不带头3.循环或非循环虽然结构众多,但重点掌握两种:**无头单向非循环链表:**结构简单,一般不会单独用来存储数原创 2022-03-18 23:48:22 · 320 阅读 · 0 评论 -
ArrayList与顺序表
ArrayList简介在集合框架中,ArrayList是一个普通的类,实现了List接口。【说明】ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问ArrayList实现了Cloneable接口,表明ArrayList是可以clone的ArrayList实现了Serializable接口,表明ArrayList是支持序列化的和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector或者CopyOnWriteAr原创 2022-03-13 14:58:41 · 527 阅读 · 0 评论 -
List的介绍
什么是List在集合框架中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。常见接口介绍方法解释boolean add(E e)尾插 evoid add(int inde原创 2022-03-13 14:55:13 · 693 阅读 · 0 评论 -
Java泛型
什么是泛型一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。引出泛型实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值思路:1. 我们以前学过的数组,只能存放指定类型的元素,例如:i原创 2022-03-10 23:05:52 · 422 阅读 · 0 评论