数据结构简介

在容器的基础之上,java引入了数据结构的概念。数据结构可以简单地理解成是一个以特定的布局方式来存储数据的容器。但是我个人觉得这种理解方式不太合理,根据我们学的数据结构的内容,我更倾向于数据结构是数据在容器中的布局方式,而不是容器本身。

数据结构是数据的布局方式,那么根据数据的布局方式的不同,采用不同的数据结构的容器的自然也是不同的。根据数据结构的不同,不同的容器对于不同的操作反应效率是不同的,也就是说对于一个容器来说,某些操作是高效的,而另一些操作是低效的。这一点在我们之前介绍的容器ArrayList容器类和LinkedList容器类当中体现得较为明显。ArrayList容器类的底层是通过数组来实现的,所以它的访问效率较高但是增删效率较低;而LinkedList类的底层是通过双向链表实现的,它的访问效率低下,但是增删效率较高。从这个例子上也得出一个结论:每一种数据结构逗不是万能的,都有它的优点和缺点。这也就是我们需要学习数据结构的原因,只有掌握了各种各样的数据结构的特点才能在实际运用中原则合适的数据结构来处理问题。

数据结构可以分为逻辑结构个物理结构两部分,逻辑结构指的是数据元素间抽象化的相互关系,而物理结构指的是存储结构即数据在计算机中的存储形式。按照逻辑结构来分类,数据结构可以分为线性结构、树形结构以及图形结构。线性结构中的元素存在一对一的关系,常见的线性结构有线性表、栈、队列、串(一维数组)等。树形结构中的元素和线性结构不同,它并不是一一对应的关系,一般是一对多的情况,常见的树形结构有二叉树、红黑树、B树、哈夫曼树等。图形结构是一种多对多的数据结构,有点像网络结构。图形结构比较复杂而且应用不多,因此只做简单了解。常见的图形结构有:有向图、无向图、简单图等。

相关推荐
散11211 小时前
01数据结构-01背包问题
数据结构
消失的旧时光-194311 小时前
Kotlinx.serialization 使用讲解
android·数据结构·android jetpack
Gu_shiwww11 小时前
数据结构8——双向链表
c语言·数据结构·python·链表·小白初步
苏小瀚13 小时前
[数据结构] 排序
数据结构
睡不醒的kun15 小时前
leetcode算法刷题的第三十四天
数据结构·c++·算法·leetcode·职场和发展·贪心算法·动态规划
吃着火锅x唱着歌15 小时前
LeetCode 978.最长湍流子数组
数据结构·算法·leetcode
Whisper_long15 小时前
【数据结构】深入理解堆:概念、应用与实现
数据结构
IAtlantiscsdn15 小时前
Redis7底层数据结构解析
前端·数据结构·bootstrap
我星期八休息15 小时前
深入理解跳表(Skip List):原理、实现与应用
开发语言·数据结构·人工智能·python·算法·list
和编程干到底17 小时前
数据结构 栈和队列、树
数据结构·算法