顺序表的定义:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。 [1]
简单的说:将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构是顺序结构。
public class ArrList {
private final int DEFAULT_SIZE = 3; // 默认初始数组大小
private String[] arr = new String[DEFAULT_SIZE]; // 初始化数组
private final int N = 1; // 扩大倍数
private int length = 0; // 长度
/**
* 添加数据
* @param value 要添加的值
*/
public void add(String value) {
if(length == arr.length) {
String[] temp = new String[DEFAULT_SIZE + N*DEFAULT_SIZE];
for (int i = 0; i < arr.length; i++) {
temp[i] = arr[i];
}
arr = temp;
}
arr[length++] = value;
}
/**
* 移除下标为index元素
* @param index 第几个元素
* @return 是否移除成功
*/
public boolean remove(int index) {
if(index < 0 || index> size()) {
return false;
}
for (int j = 0; j < size(); j++) {
if(index == j) {
for(int k = j; k < size() - 1; k++ ) {
arr[j] = arr[j+1];
}
length--;
return true;
}
}
return false;
}
/**
* 获取指定索引上的元素
* @param index
* @return 第index上的索引的元素
*/
public String get(int index) {
return index < 0 || index > size() ? null : arr[index];
}
/**
* 获取元素个数
* @return
*/
public int size() {
return length;
}
public static void main(String[] args) {
ArrList list = new ArrList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println(list.size());
System.out.println(list.remove(2));
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
运行结果如下
zhangsan
lisi
wangwu
3
true
zhangsan
lisi