数据结构
文章平均质量分 76
数据结构
frost-cold
这个作者很懒,什么都没留下…
展开
-
【数据结构】反射、枚举以及lambda表达式
Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。原创 2024-03-12 23:42:26 · 964 阅读 · 0 评论 -
【数据结构】Map和Set
Map.Entry 是Map内部实现的用来存放键值对映射关系的内部类,该内部类中主要提供了的获取,value的设置以及Key的比较方式。Map是一个接口类,该类没有继承自Collection,该类中存储的是结构的键值对,并且K一定是唯一的,不。Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。原创 2024-03-11 23:41:31 · 752 阅读 · 0 评论 -
【数据结构】排序
当插入第i(i>=1)个元素时,前面的array[0],array[1],…不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持。把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到。排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。原创 2024-03-10 21:02:04 · 414 阅读 · 1 评论 -
【数据结构】java对象的比较
因为:对于用户实现自定义类型,都默认继承自Object类,而Object类中提供了equal方法,而==默认情况下调。从编译结果可以看出,Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较。优先级队列底层使用堆,而向堆中插入元素时,为了满足堆的性质,必须要进行元素的比较,而此时Card是没有办。用的就是equal方法,但是该方法的比较规则是:没有比较引用变量引用对象的内容,而是直接比较引用变量的地。在Java中,基本类型的对象可以直接比较大小。法直接进行比较的,因此抛出异常。原创 2024-03-09 23:41:02 · 474 阅读 · 0 评论 -
【数据结构】优先级队列(堆)
Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的。使用时必须导入PriorityQueue所在的包,即:PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常不能插入null对象,否则会抛出NullPointerException。原创 2024-03-08 23:22:42 · 1365 阅读 · 2 评论 -
【数据结构】二叉树
双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点;孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点;如上图:B是A的孩子结点。叶子结点或终端结点:度为0的结点称为叶结点;子孙:以某结点为根的子树中任一结点都称为该结点的子孙。非终端结点或分支结点:度不为0的结点;兄弟结点:具有相同父结点的结点互称为兄弟结点;结点的祖先:从根到该结点所经分支上的所有结点;结点的度:一个结点含有子树的个数称为该结点的度;结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推。原创 2024-03-07 23:48:13 · 711 阅读 · 1 评论 -
【数据结构】栈和队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头(Head/Front)栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。注意:Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。原创 2024-03-06 23:25:41 · 765 阅读 · 1 评论 -
【数据结构】LinkedList与链表
由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。因此:java集合中又引入了LinkedList,即链表结构。链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。原创 2024-03-05 20:55:25 · 446 阅读 · 1 评论 -
【数据结构】ArrayList与顺序表
在集合框架中,ArrayList是一个普通的类,实现了List接口。ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问ArrayList实现了Cloneable接口,表明ArrayList是可以clone的ArrayList实现了Serializable接口,表明ArrayList是支持序列化的和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector或者。原创 2024-03-04 22:52:08 · 608 阅读 · 2 评论 -
【数据结构】List的介绍
在集合框架中,List是一个接口,继承自Collection。注意:List是个接口,并不能直接用来实例化。如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和LinkedList都实现了List接口。原创 2024-03-03 23:29:37 · 316 阅读 · 0 评论 -
【数据结构】泛型
泛型就是适用于许多许多类型。泛型只能接受类,所有的基本数据类型必须使用包装类。原创 2024-03-02 22:01:29 · 688 阅读 · 0 评论 -
【数据结构】时间和空间复杂度
时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个数学函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。,在计算机发展的早期,计算机的存储容量很小。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数。原创 2024-03-01 23:22:18 · 830 阅读 · 2 评论 -
【数据结构】初始集合框架
Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD。原创 2024-02-29 23:49:50 · 332 阅读 · 0 评论