##顺序表的java实现,可以看做一个具备线性表的功能的数组定义接口List
package arrayList;
public interface List {
public int size();//线性表的长度
public boolean isEmpty();//判断是否为空
//对位置进行判断,会有异常发生
public void insert(int index,Object obj) throws Exception;//插入
public void delete(int index) throws Exception;//删除
public Object get(int index) throws Exception;//获取指定位置的元素
}
##实现类ArrayList
package arrayList;
public class ArrayList implements List {
private int ds = 10;//默认线性表的最大长度
private int size;//当前长度
private int maxSize;//最大长度
private Object[] arrayList;//可以看成定义一个数组
//构造方法
//使用默认最大长度
public ArrayList(){
init(ds);
}
//自己设置线性表的最大长度
public ArrayList(int size){
init(size);
}
//初始化线性表
public void init(int size){
maxSize = size;
this.size = 0;
arrayList = new Object[size];
}
//返回线性表的当前长度
@Override
public int size() {
return size;
}
//判空
@Override
public boolean isEmpty() {
return size == 0;
}
//插入元素(思想:从最后一个元素开始,依次往后挪一个位置,一直到带插入位置,这样就空开了插入位置,然后插入)
@Override
public void insert(int index, Object obj) throws Exception {
if(size == maxSize)
{
throw new RuntimeException("线性表已满,不能插入!");
}
if(index < 0 || index > size)
{
throw new RuntimeException("插入位置不合理!");
}
for(int i = size - 1; i >= index; i++)
{
arrayList[i+1] = arrayList[i];
}
arrayList[index] = obj;
size++;
}
//删除元素(思想:覆盖,将要删除的位置的后一个元素依次往前挪,这样就达到了删除位置)
@Override
public void delete(int index) throws Exception {
if(index < 0 || index > size - 1)
{
throw new RuntimeException("删除位置不合理!");
}
for(int i = index; i < size; i++ ){
arrayList[i] = arrayList[i+1];
}
size--;
}
//获取指定位置的元素
@Override
public Object get(int index) throws Exception {
if(index < 0 || index > size - 1)
{
throw new RuntimeException("获取元素位置不合理!");
}
return arrayList[index];
}
}
##测试类
package arrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList(20);
try {
list.insert(0, 0);
list.insert(1, 1);
list.insert(2, 2);
list.insert(3, 3);
list.insert(4, 4);
list.insert(5, 5);
list.insert(6, 6);
list.insert(7, 7);
for(int i = 0; i <list.size();i++)
{
System.out.println("第"+i+"个元素为:"+list.get(i));
}
list.delete(5);
System.out.println("----------------------");
for(int i = 0; i <list.size();i++)
{
System.out.println("第"+i+"个元素为:"+list.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}