1.相关操作的实现
package Listdemo;import java.util.Arrays;public class MyArrayList implements Ilist{public int [] elem=new int[2];public int usedSize=0;//扩容private void grow() {elem = Arrays.copyOf(elem,2*elem.length);}@Override//新增元素,默认在数组最后新增public void add(int data) {if(isFull()){grow();}elem[usedSize]=data;usedSize++;}@Override// 在 pos 位置新增元素;public void add(int pos, int data) throws ArrayException {if(pos < 0 || pos > usedSize) {throw new ArrayException("pos位置不合法");}if(isFull()){grow();}for (int i = usedSize-1; i >=pos; i--) {elem[i]=elem[i+1];}elem[pos]=data;usedSize++;}@Override// 判定是否包含某个元素public boolean contains(int toFind) throws ArrayException {if(isEmpty()){throw new ArrayException("数组为空,不存在元素");}for (int i = 0; i < elem.length; i++) {if(elem[i]==toFind){return true;}}return false;}@Override// 查找某个元素对应的位置public int indexOf(int toFind) throws ArrayException {if(usedSize==0){throw new ArrayException("数组为空");}for (int i = 0; i < elem.length; i++) {if(elem[i]==toFind){return i;}}return 0;}@Override// 获取 pos 位置的元素public int getPosval(int pos) throws ArrayException {if(pos<0||pos>usedSize){throw new ArrayException("该位置错误");}return elem[pos];}@Overridepublic void remove(int toRemove) throws ArrayException {if(toRemove<0||toRemove>=usedSize){throw new ArrayException("删除位置错误");}for (int i = toRemove; i < usedSize; i++) {elem[i]=elem[i+1];}}@Override// 获取顺序表长度public int size() throws ArrayException {if(usedSize==0){throw new ArrayException("数组为空");}return usedSize;}@Overridepublic Boolean isEmpty() {if(usedSize==0){return true;}return false;}@Overridepublic Boolean isFull() {if(usedSize== elem.length){return true;}return false;}@Override// 清空顺序表public void clear() {usedSize=0;}@Override// 打印顺序表public void display() {for (int i = 0; i < elem.length; i++) {System.out.println(elem[i]+" ");}}
}
2.相关接口
package Listdemo;public interface Ilist {// 新增元素,默认在数组最后新增void add(int data) throws ArrayException;// 在 pos 位置新增元素;void add(int pos, int data) throws ArrayException;// 判定是否包含某个元素boolean contains(int toFind) throws ArrayException;// 查找某个元素对应的位置int indexOf(int toFind) throws ArrayException;// 获取 pos 位置的元素public int getPosval(int pos) throws ArrayException;//删除第一次出现的关键字keyvoid remove(int toRemove) throws ArrayException;// 获取顺序表长度int size() throws ArrayException;// 清空顺序表void clear();// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的void display();//判断数组是否为空Boolean isEmpty();//判断数组是否满了Boolean isFull();
}
3.相关操作的调用
package Listdemo;public class Test {public static void main(String[] args) throws ArrayException {MyArrayList myArrayList=new MyArrayList();myArrayList.add(1);myArrayList.add(2);myArrayList.add(3);myArrayList.add(4);myArrayList.add(5);myArrayList.display();System.out.println("============");myArrayList.add(5,10);myArrayList.display();System.out.println(myArrayList.contains(2));System.out.println(myArrayList.getPosval(3));System.out.println("============");myArrayList.indexOf(1);myArrayList.remove(2);System.out.println("============");myArrayList.display();}
}
4.异常的声明
package Listdemo;public class ArrayException extends Exception{public ArrayException(String message) {super(message);}
}