顺序表是线性表以顺序存储方式实现的,存储与内存中的一块连续存储空间。
package arraylist;
import java.util.Arrays;
public class ArrayList {
private Object[] array; // 使用数组存储数据
private int size; // 顺序表中数据的个数
// 无参构造
public ArrayList() {
this(4);
}
// 有参构造
public ArrayList(int initlength) {
array = new Object[initlength];
}
// 获取顺序表长度
public int Length() {
return array.length;
}
//判断顺序表是否为空
public boolean isEmpty() {
return size==0;
}
//获取顺序表数据个数
public int size() {
return size;
}
// 添加数据,添加位置为i,数据为e
public void add(int i, Object e) {
// 先校验位置i是否合理
if (i < 0 || i > size) {
throw new RuntimeException("插入索引越界:" + i);
}
// 判断是否需要扩容 扩容为原先长度的两倍
if (size == array.length) {
// 创建一个新的数组
array = Arrays.copyOf(array, array.length * 2);
// 将旧数组的数据存入新数组中
for (int j = size; j > i; j--) {
array[j] = array[j - 1];
}
}
// 添加数据
array[i] = e;
size++;
}
// 在顺序表末尾添加数据
public void add(Object e) {
this.add(size, e);
}
//删除索引位置数据
public void delete(int i) {
for(int j=i;j<size;j++) {
array[j] = array[j+1];
}
size--;
}
//查看索引位置数据
public Object select(int i) {
return array[i];
}
//修改索引位置数据
public void updata(int i,Object e) {
array[i] = e;
}
// 打印顺序表
@Override
public String toString() {
StringBuffer buffer = new StringBuffer("[");
for (int i = 0; i < size; i++) {
if (i != size - 1) {
buffer.append(array[i] + ",");
} else {
buffer.append(array[i]);
}
}
buffer.append("]");
return buffer.toString();
}
}
原文:https://www.cnblogs.com/yl-995820/p/12853475.html