什么是数据?
数据是指所有能输入计算机并被计算机程序处理的符号的集合。源程序、文档、地图、照片其实都是数据。
数据结构
数据结构分为逻辑结构和物理结构。逻辑结构:主要是数据元素之间的逻辑关系,物理结构指的是数据结构在计算机种的表示及存储方式。
逻辑结构
包含集合、线性结构、树结构和图结构
集合
由元素构成,它是数学中的一个基本概念。集合中各元素之间没有次序关系。(是不是可以理解为Java中的set集合)
线性结构
数据元素之间存在着先后次序关系的结构,每个元素都对应着一个唯一的次序,这个次序决定着元素的位置。
(Java中的List)
树结构
是一种层次结构,其中的数据元素按层排列。(Java中的hashMap)
图结构
一种网状结构,其中的每个数据元素都可以与多个其他的数据元素相关。数结构可以被看作图的特例。树结构和图结构都是比线性结构复杂的结构,它们也称为非线性结构。
根据数据元素之间存在的关系的元素个数划分,线性结构中元素之间是一对一的关系,树结构式一对多的关系,而图结构是多对多的关系。
存储结构
- 顺序存储
逻辑上相邻的数据元素存储到物理位置相邻的存储单元中。其实Java中的一维数组,就是采用的顺序存储方法。相应的存储结构称为顺序存储结构。
- 链式存储方法
逻辑上的数据元素,不要求其存储的物理位置也相邻,通常借程序中的指针表示数据元素之间的逻辑关系。相应的存储结构称为链式存储结构。(Java中的linkedlist)
- 索引存储方法
除保存数据元素以外,还针对数据元素建立索引表。索引表由索引项组成,索引项指示数据元素所在的物理位置。通过索引项,可以加快数据元素的查找速度。(数据库添加索引)
- 散列存储方法
散列存储方法是一种特殊方法,它根据数据元素的关键字计算出该元素的物理存储位置。通常,将称为散列表的一维数组作为保存元素的结构。(Java中的hashmap)
注意:
1.在数据结构采用顺序存储结构保存时,对于逻辑上相邻的数据元素,其存储单元的物理位置也相邻,因此存储空间必然是连续的。
2.采用链式存储结构存储数据时,通常使用指针来指示数据元素之间的逻辑关系,指针保存的是相关数据元素的存储地址。所以,这个两个元素在内存中可能是相邻的,也可能是不相邻的,所有元素的存储空间不一定是连续的。
3.顺序存储结构和链式存储结构既可以保存线性结构,又可以保存非线性结构。至于那种存储结构更节省存储空间,要视具体情况而定。
抽象数据类型
包括类型的名字及对各个操作的刻画,也就是要明确“做什么”。对于每个操作,要规定操作的名字、操作执行的前提条件、输入和输出分别是什么。每个操作通常表示为一个函数或方法。(Java中的抽象类)
Java中的抽象类是一种特殊的类,它不能被实例化,只能被用作其他类的父类。抽象类通常用于为子类提供一个模板或者基础,它定义了一些抽象方法,这些方法没有具体的实现,需要由子类来实现。子类必须实现所有的抽象方法,否则就必须声明为抽象类。
抽象类的关键字是"abstract",使用抽象类的语法如下:
Copy Codepublic abstract class AbstractClass {
// 抽象方法
public abstract void abstractMethod();
// 非抽象方法
public void concreteMethod() {
// 实现代码
}
}
需要注意的是,抽象类中不一定要有抽象方法,但是如果一个类中包含抽象方法,那么这个类必须声明为抽象类。抽象类不能被实例化,因此它的构造函数不能被调用。抽象类可以被用作其他类的类型,例如作为方法的参数或返回值类型。