Java数据结构
文章平均质量分 88
The丶Closer
大工至善,大学至真!
展开
-
1. 初识集合框架
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。原创 2024-09-03 15:25:31 · 783 阅读 · 0 评论 -
2. 时间和空间复杂度
一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。空间复杂度不是程序占用了多少 bytes 的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。原创 2024-09-03 15:34:46 · 242 阅读 · 0 评论 -
3. 包装类&泛型
一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的 代码,这种刻板的限制对代码的束缚就会很大。泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。2. 泛型的目的就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。方法限定符 返回值类型 方法名称(形参列表) {...}原创 2024-09-03 21:32:07 · 640 阅读 · 0 评论 -
4. List的介绍
Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。【面试题】Collection中有那些方法?原创 2024-09-04 17:05:58 · 338 阅读 · 0 评论 -
5. ArrayList与顺序表
在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:【说明】ArrayList是以泛型方式实现的,使用时必须要先实例化ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问ArrayList实现了Cloneable接口,表明ArrayList是可以clone的ArrayList实现了Serializable接口,表明ArrayList是支持序列化的。原创 2024-09-05 09:28:21 · 963 阅读 · 0 评论 -
6. LinkedList与链表
通过源码知道,ArrayList底层使用数组来存储元素,由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。所以,java集合中又引入了LinkedList,即链表结构。链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。原创 2024-09-06 09:46:39 · 788 阅读 · 0 评论 -
7. 栈和队列
栈帧:函数从调用过程到结束的体现,一个函数从调用到销毁其中占用的空间,内部的局部变量统一放在栈帧中。每个函数在运行时,jvm都会创建一个栈帧,然后将栈帧压入到虚拟机栈中,当函数调用结束时,该函数对应的栈帧会从虚拟机栈中出栈。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 的特性。从上图中可以看到,Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。原创 2024-09-08 15:04:18 · 806 阅读 · 0 评论 -
8. 二叉树
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。若一个结点含有子结点,则这个结点称为其子结点的父结点;以某结点为根的子树中任一结点都称为该结点的子孙。一个结点含有的子树的根结点称为该结点的子结点;度为0的结点称为叶结点;具有相同父结点的结点互称为兄弟结点;从根开始定义起,根为第1层,根的子结点为第2层,以此类推。一棵树中,没有双亲结点的结点;原创 2024-09-10 09:25:41 · 749 阅读 · 0 评论 -
9. 优先级队列(堆)
前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;2. 已知小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,在此过程中,关键字之间的比较次数是(C)那对于普通的序列 {1,5,3,8,7,6},即根节点的左右子树不满足堆的特性,该如何调整?堆的删除一定删除的是堆顶元素。原创 2024-09-19 09:20:47 · 646 阅读 · 0 评论 -
10. 排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。原创 2024-09-22 21:08:43 · 424 阅读 · 0 评论 -
11. Map和Set
平衡二叉树可定义为或是一棵空树,或是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度差的绝对值不超过 1。原创 2024-09-26 22:40:50 · 1218 阅读 · 0 评论 -
12. 反射、枚举和lambda表达式
反射的意义。反射重要的几个类:Class类 、Field类、 Method类、 Constructor类。学会合理利用反射,一定要在安全环境下使用。原创 2024-10-05 17:16:09 · 852 阅读 · 0 评论