
数据结构
文章平均质量分 92
Java数据结构知识
星迹日
千淘万漉虽辛苦,吹尽狂沙始到金。
展开
-
数据结构:lambda表达式
Lambda表达式的优点很明显,在代码层次上来说,使代码变得非常的简洁。缺点也很明显,代码不易读。1. 代码简洁,开发迅速2. 方便函数式编程3. 非常容易进行并行计算4. Java引入Lambda,改善了集合操作1. 代码可读性变差2. 在非并非计算中,很多计算未必有传统的for性能要高3. 不容易进行调试好了今天的分享就到这里了,还请大家多多关注,我们下一篇见!原创 2025-03-02 20:51:47 · 1415 阅读 · 0 评论 -
数据结构:反射 和 枚举
Java中的反射和枚举性质讲解原创 2025-02-27 13:12:06 · 1130 阅读 · 0 评论 -
数据结构:Map & set - 习题(三)
Map和Set习题原创 2025-02-24 16:24:13 · 1007 阅读 · 0 评论 -
数据结构:二叉树—面试题(二)
有关二叉树的面试题原创 2025-01-25 20:46:14 · 2054 阅读 · 0 评论 -
数据结构:Map & set - 哈希表(二)
顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(logN),搜索的效率取决于搜索过程中元素的比较次数。原创 2025-02-18 16:27:29 · 1003 阅读 · 0 评论 -
数据结构:Map & Set(一)
Map是一个接口类,该类没有继承自Collection,该类中存储的是结构的键值对,并且K一定是唯一的,不能重复。Set与Map主要的不同有两点:Set是继承自Collection的接口类,Set中只存储了Key。原创 2025-02-14 19:11:15 · 1502 阅读 · 0 评论 -
数据结构:排序—计数,桶,基数排序(五)
计数排序不基于比较的排序方法最大值和最小值开辟一个数组max-min+1遍历待排序数组,将得到的值作为新数组的下标每得到一个数对应的下标处的值加1遍历新数组新数组的值下标值(如果是相同的元素需要根据新数组的值存放,每存放一个就将新数组的值减一,直到值为0,同理如果只有一个元素(没有相同的元素)值就为1,存放后也会等于0)。注意如果我们要排序的数据0-9,我们创建的数组就是0-9的数组90-99的数还是会创建0-9的数组没有办法存储数据改进取得原数组的值时,让他减去我们的最小值能存进数组里了。原创 2025-02-12 17:42:06 · 1122 阅读 · 0 评论 -
数据结构:排序—归并排序(四 )
基本思想:归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。基本思路:根据上述的说法,我们要将一组数据分成一个一个的子序列,然后让这些子序列有序,最后将这些有序的子序列合并,并将他排序,形成一个有序的序列。原创 2025-02-11 14:20:16 · 672 阅读 · 0 评论 -
数据结构:排序—交换排序(三)
基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。交换排序的特点:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。原创 2025-02-10 15:07:51 · 1001 阅读 · 0 评论 -
数据结构:排序—选择排序(二)
此时最大值位置所代表的值就变成了我们交换后的最小值了。交换我们此时最小值和最大值的位置。原本位置就是我们的最大值。从我们标记位置加一处。最小值和最大值的位置。指向我们的最小值位置。原创 2025-02-07 16:50:19 · 1067 阅读 · 0 评论 -
数据结构:排序—插入排序(一)
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的,否则称为不稳定的。。原创 2025-02-06 17:47:43 · 832 阅读 · 0 评论 -
数据结构:优先级队列— PriorityQueue
在Java中自带了一种优先级队列:PriorityQueue,它保证了每次取出的元素都是队列中最小或最大的,并且他的形态采用树形结构,通过实现一个完全二叉树的最小堆或最大堆来实现队列的排序。原创 2025-02-04 15:43:05 · 1776 阅读 · 0 评论 -
数据结构:优先级队列—堆
优先级队列,听名字我们就知道他是一种队列,队列在前面我们已经学习过了,它是一种先进先出的数据结构,但是在特殊的情况下,我们我们队列中元素是带有一定优先级的,它需要比我们此时的队头元素,更先的出队列,或者更先的入队列比如,当我们刚进入游戏的时候,突然有人来敲门,在这种情况下,我们是不是应该先去开门,虽然我们是先进的游戏,但是我们应该先去开门。或者,当我们要乘坐飞机时,我们是经济舱的乘客,现在我们正在排队检票,下一个就是你,但是这时来了个头等舱的人,他肯定是要比我们先进的。原创 2025-02-01 16:23:21 · 1100 阅读 · 0 评论 -
数据结构:二叉树—面试题(一)
有关二叉树的面试题。原创 2025-01-23 21:29:32 · 1469 阅读 · 0 评论 -
数据结构:二叉树
树是⼀种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。原创 2025-01-19 18:17:32 · 1339 阅读 · 0 评论 -
数据结构:栈(Stack)和队列(Queue)—面试题(二)
栈和队列的面试题原创 2025-01-13 13:26:39 · 1115 阅读 · 0 评论 -
数据结构:栈(Stack)和队列(Queue)—面试题(一)
有关栈的常考面试题原创 2025-01-10 21:44:58 · 1200 阅读 · 0 评论 -
数据结构:栈(Stack)和队列(Queue)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,栈中的数据元素遵守后进先出。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。因此我们的入栈和出栈的操作都是在栈顶进行的,并遵循后进先出原则栈总共有六种方法入栈E push(E e): 出栈pop():获取栈顶元素E peek():获取栈中有效元素的个数 int size(): 检测栈是否为空boolean empty():Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,既然是顺序表想必我们是能够使用原创 2025-01-09 21:06:10 · 1897 阅读 · 0 评论 -
数据结构:LinkedList与链表—面试题(三)
链表面试题原创 2025-01-08 16:39:32 · 1303 阅读 · 0 评论 -
数据结构:LinkedList与链表—无头双向链表(二)
LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。同时,LinkedList也实现了List接口。原创 2025-01-07 15:23:32 · 1114 阅读 · 1 评论 -
数据结构:LinkedList与链表—无头单向链表(一)
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。原创 2025-01-06 17:37:18 · 1158 阅读 · 1 评论 -
数据结构:ArrayList与顺序表
在上面我们自己实现了一个顺序表,但是在Java中编译器自带了一个顺序表ArrayList类,它同样实现了List接口,虽然它和我们自己实现的顺序表大同小异,但是它还有一些地方需要注意。ArrayList是以泛型方式实现的,使用时必须要先实例化ArrayList实现了RandomAccess接口,表明ArrayList⽀持随机访问ArrayList实现了Cloneable接口,表明ArrayList是可以clone的。原创 2025-01-05 16:39:55 · 1293 阅读 · 4 评论 -
数据结构:包装类和泛型
一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。泛型,所谓泛型就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化我们来看这样一个例子,在数组中存放各种类型的元素我们知道Object类默认为所有类的父类,所以我们创建的数组为Object类的数组。原创 2025-01-04 14:23:12 · 1374 阅读 · 5 评论 -
数据结构:时间复杂度和空间复杂度
我们知道代码和代码之间算法的不同,一定影响了代码的执行效率,那么我们该如何评判算法的好坏呢?这就涉及到了我们算法效率的分析了。所谓算法效率的分析分为两种:第一种时间效率,又称时间复杂度。第二种空间效率,又称空间复杂度。其中,时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。算法的时间复杂度其实是一个数学函数,它描述了该算法的运行时间,然而实际上,我们并不能准确的,将一个算法所耗费的时间算出来,只有在机器上跑起来,才能够得到,但是一段代码可能有多个算法,难道我们要每个都上原创 2025-01-03 17:27:21 · 1427 阅读 · 4 评论