1.线性表与顺序表
线性表是指具有相同性质的元素组成的有限序列,由N个成员组成一个整体的数据结构,常见的线性表由:顺序表、链表、栈、队列、还有字符串.
线性表在逻辑上,是连续的,在物理结构上,不一定是连续的,他们开辟的物理空间之间不是彼此相连的,相互存在间隙。线性表储存是通常以数组和链式结构储存。
顺序表属于线性表,他开辟的物理空间是连续的,其底层逻辑就是数组,但是顺序表的逻辑实现是通过类来完成
相对于对普通的数组进行操作,顺序表显得更高级
- 可以扩容。顺序表在数组的基础上,当顺序表容量满了,可以自动实现扩大容量的功能,一般都是按原来比例的二倍进行扩容。
注意: Java提供的顺序表在开辟的阶段,如果未给出指定的容量capacity默认为零,其源码为:
public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } //而DEFAULTCAPACITY_EMPTY_ELEMENTDATA起始大小为零,当第一次add的时候,系统给出的默认大小为十。
- 知晓有效元素的个数。数组给定容量后,只能查看总容量,也就是给定的大小,不能知晓有效元素的个数。就是当给定大小的数组为十个int类型的大小时,而数组里有效的数字只有一个int类型的元素。数组是无法判断这个大小只有一个int类型的大小。而顺序表中的有效元素size可以判断顺序表中的有效数字有多少。
所以可以把数组的功能当作顺序表功能的子集。
注意事项: 顺序表中的容量(capacity)和元素个数(size)的区别
顺序表的容量相当于数组的指定大小,元素个数size相当于该指定大小的空间中有效利用的空间中元素的个数
2.打印顺序表
//遍历顺序表,并打印
public void display(){
//usedSize==0
for (int i = 0; i < this.usedSize; i++) {
System.out.println(this.elem[i]+" ");
}
System.out.println();