一、顺序表:
顺序表即基于数组实现的线性表,成为动态数组,用一组地址连续的存储单元存储各个元素,使得其在逻辑上相邻,物理上也相邻,以数组的形式保存数据。
原生的数组有何弊端:
a.若数组开辟长度过小,能存储的数据较少。
b.若数组开辟长度过大,则会浪费大量空间。
c.插入和删除效率低。
d.一旦定义一个数组,其长度是固定的,无法修改。
int[ ] arr = new int [10];//定义了一个长度为10的整型数组,此时最多只能存10
动态数组:根据当前存储的数据元素进行数组的扩容(需自己实现),将原生的数组int [ ]做了一层包装,使其具有动态扩容的功能。
顺序表表的优点:
a.便于随机读取,读取数据的速度快。
链表的弊端:
a.由于他顺序的存储结构,不便于插入和删除。
属性:
int[] elementData//存储数据
int size //当前动态数组中存储了几个元素
所有数据结构无外乎C、R、U、D四大方法:
二、顺序表的常见基本操作:
public void addFirst(int data){};//在数组头部添加元素
public void addLast(int data){};//在数组的尾部添加元素
public void addIndex(int index,int data){};//在数组的索引index处添加元素
private void grow() {}// 内部扩容方法
public String toString() {}//将当前动态数组转换为字符串
public boolean contains(int data) {}判断当前集合中是否包含指定元素data
public void remove(int index){}//删除下标为index的元素
public void removeValue(int value) {}//按值删除,删除线性表中所有值等于value的元素
public int set(int index,int newData) {}//将指定位置index的元素修改为新值newData
private boolean rangeCheck(int index) {}//校验当前传入的index是否合法(用在查询,设置,删除)
// 取得当前数组长度
public int getSize() {
return size;
}