![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构基础篇
文章平均质量分 86
数据结构基础篇
muyierfly
这个作者很懒,什么都没留下…
展开
-
01.学习数据结构所需知道的知识
数据结构有很多种,意味着不同的数据结构,组织和描述数据的方式是不一样的!特定的情况下会使用特定的数据结构!一个题要用算法实现,是离不开好的数据结构的!可以认为Java的集合类的背后就是一个数据结构只不过Java的集合类已经帮你实现好了这个结构,你无需实现。数据结构是一门单独的学科,和语言没有关系!只是通过不同的语言来实现这个结构的!这是两个不同的东西,你可以认为,数据库的底层的组织也是用到了数据结构!1.Java的数据结构和C++的数据结构有什么不一样?3.数据结构和所说的Java的集合类有什么关系?原创 2023-03-29 22:59:40 · 181 阅读 · 0 评论 -
02.初识集合框架
Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、 管理 manipulate ,即平时我们俗称的增删查改 CRUD。原创 2023-03-30 10:09:35 · 312 阅读 · 0 评论 -
03.时间和空间复杂度
时间效率被称为时间复杂度,而空间效率被称作 空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间, 在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计 算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2023-04-02 20:32:56 · 866 阅读 · 0 评论 -
04.包装类&简单认识泛型
方法限定符 返回值类型 方法名称(形参列表) { ... }原创 2023-04-02 21:42:47 · 540 阅读 · 0 评论 -
05.List的介绍
List中提供了好的方法,具体如下:原创 2023-04-02 23:44:13 · 583 阅读 · 0 评论 -
06.ArrayList与顺序表
在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:原创 2023-04-06 18:43:08 · 281 阅读 · 0 评论 -
07.LinkedList与链表
LinkedList的底层是双向链表结构(链表后面介绍),由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中,LinkedList也实现了List接口,具体如下:【说明】实现了List接口的底层使用了双向链表没有实现接口,因此LinkedList不支持随机访问的任意位置插入和删除元素时效率比较高,时间复杂度为O(1)比较适合任意位置插入的场景的使用1.原创 2023-04-07 23:43:26 · 491 阅读 · 0 评论 -
07.1 双向链表
/任意位置进行插入,先绑定后面,再绑定前面。原创 2024-05-08 18:04:06 · 184 阅读 · 0 评论 -
08.Stack和Queue
JVM的栈就是平常所说的一块内存。此处所说的栈是数据结构。原创 2023-05-29 16:54:17 · 950 阅读 · 0 评论 -
09.二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。原创 2023-05-31 21:04:17 · 703 阅读 · 0 评论 -
10.枚举
枚举是在JDK1.5以后引入的。在这之前表示一组常量通常使用定义常量的方式:但是常量举例有不好的地方,例如:可能碰巧有个数字1,但是他有可能误会为是RED,现在我们可以直接用枚举来进行组织,这样一来,就拥有了类型,枚举类型。而不是普通的整形1.,消息类型,颜色的划分,状态机等等....本质:是 java.lang.Enum 的子类,也就是说,自己写的枚举类,就算没有显示的继承 Enum ,但是其默认继承了这个类。原创 2024-04-08 22:56:32 · 390 阅读 · 0 评论 -
10.PriorityQueue
Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,本文主要介绍PriorityQueue。使用时必须导入PriorityQueue所在的包,即:PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常。原创 2023-05-31 21:37:27 · 6 阅读 · 0 评论 -
11.java对象的比较
优先级队列底层使用堆,而向堆中插入元素时,为了满足堆的性质,必须要进行元素的比较,而此时Card是没有办法直接进行比较的,因此抛出异常。2.2 对象比较的问题c1、c2和c3分别是Card类型的引用变量,上述代码在比较编译时: c1 > c2 编译失败 c1== c2 编译成功 c1 < c2 编译失败 从编译结果可以看出,Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较。 那为什么==可以比较? 因为:对于用户实现自定义类型,都默认继承自Object类,原创 2023-05-31 22:16:43 · 10 阅读 · 0 评论 -
12.排序
1.直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用2.时间复杂度:O(N^2)3.空间复杂度:O(1)4.稳定性:不稳定。原创 2023-05-31 22:38:35 · 6 阅读 · 0 评论 -
13.Map和Set
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树1.如果树为空树,即根== null,直接插入2.如果树不是空树,按照查找逻辑确定插入位置,插入新结点1.1. cur是root,则2. cur不是rootcur是,则3. cur不是rootcur是,则2.1. cur是root,则2. cur不是rootcur是,则3. cur不是rootcur是,则3.1.需要使用。原创 2023-05-31 23:20:49 · 13 阅读 · 0 评论 -
14.反射的使用
反射的意义反射重要的几个类: Class类 、Field类、 Method类、 Constructor类学会合理利用反射,一定要在安全环境下使用。原创 2023-05-31 23:40:02 · 8 阅读 · 0 评论 -
15.枚举的使用
1、枚举本身就是一个类,其构造方法默认为私有的,且都是默认继承与 java.lang.Enum2、枚举可以避免反射和序列化问题3、枚举的优点和缺点面试问题(单例模式学完后可以回顾):1、写一个单例模式//进入区域后,再检查一次,如果仍是null,才创建实例 uniqueInstance = new Singleton();} }2、用静态内部类实现一个单例模式/** 私有化构造器 */ private Singleton() {原创 2023-05-31 23:54:20 · 5 阅读 · 0 评论 -
16.Lambda表达式
Lambda表达式的优点很明显,在代码层次上来说,使代码变得非常的简洁。缺点也很明显,代码不易读。代码简洁,开发迅速方便函数式编程非常容易进行并行计算Java 引入 Lambda,改善了集合操作缺点:代码可读性变差在非并行计算中,很多计算未必有传统的 for 性能要高不容易进行调试。原创 2023-06-01 00:07:32 · 6 阅读 · 0 评论 -
17.泛型进阶
方法限定符 返回值类型 方法名称(形参列表) { …}原创 2023-06-01 00:29:32 · 6 阅读 · 0 评论