Java数据结构数组篇
什么是数据结构?
数据在计算机中的存储结构,即数据在计算机中是如何摆放的。
名称 | 优点 | 缺点 |
---|---|---|
队列 | 提供先进先出的存取方式 | 存取其他项很慢 |
链表 | 插入快,删除快 | 查找慢 |
红黑树(平衡树) | 查找、插入,删除都快 | 算法复杂 |
2-3-4树(平衡树) | 查找、插入,删除都快 | 算法复杂 |
哈希表 | 插入、通过关键字存取快 | 删除慢 |
堆 | 插入、删除快,对最大数据的项的存取很快 | 对其他数据项存取蛮 |
图 | 对现实世界建模 | 有些算法复杂且慢 |
数据结构和算法的重要性
算法是程序的灵魂,优秀的程序可以在计算海量数据计算时,依旧保持高速计算。
如:String str = “java,java,hello,world”;
String temp = str.replaceAll(“java”,“你好”);
//replaceAll 是如何实现的呢???
数据结构包括:线性结构和非线性结构
线性数据结构:特点是:数据元素之前存在着一对一的线性关系。又分为顺序表(存储数据是连续的)和非连续表(链式),主要有数组,队列,链表,栈
非线性数据结构:二维数组,多维数组,广义表,树结构和图结构
数组、二维数组和稀疏数组
数组:int [] array = new int[3]; 很好理解 数组的长度是3,里面存放3个数据,存取:array[0] = 10; array = [1] = 20; …
二维数组:二维数组本质上是以数组作为数组元素的数组, 即同数组比较 数组每个下标内存入的是单个数据,而二维数组每个下标下存入的数据是数组,如下图:
**稀疏数组:**可以看做是特殊二维数组。典型的案例就是五子棋,创建五子棋所用的棋盘空间是比较大的 但是实际的point的点数据只有极少数,实际只有部分棋子的点数据,这个时候为了优化存储空间,可以采用这种二维数组来存储数据,优化存储结构。