一、思路
1.顺序表不能是空的
2.pos位置要合法
3.直接返回当前的pos位置的下标
二、图解
返回的要是当前 pos 位置的下标,因为下标是没有负数的,由此就可以得出如果下标是负数的话,
这就是一种不合法的情况。
pos 位置的下标也不会超过顺序表的长度,如果超过了也是属于一种不合法的情况。
上述图片展示的就是这两种不合法的情况。
当前 pos 位置处于的是一个合法的位置,因此此时直接返回 pos 位置的下标即可,也就是此时的 1。
上述展示的是顺序表为空的状况,此时也就不可能存在 pos 元素。
可以写一个 isEmpty 方法判断当前的顺序表是不是空的。
public boolean isEmpty() {//size()方法求的是顺序表有效元素个数return size() == 0;//根据比较的值来返回true或者false
}
size 方法求的是顺序表的元素个数,如果元素个数为等于 0 ,也就说明顺序表为空。
调用 isEmpty 方法来根据得到的结果来判断当前的顺序表是不是空的。
三、代码
class EmptyException extends RuntimeException {public EmptyException() {//这是一个提示顺序表为空的异常}public EmptyException(String massage) {super(massage);}
}class PosWrongfulException extends RuntimeException{public PosWrongfulException() {//PosWrongfulException 一个提示不合法的异常
}public PosWrongfulException(String massage) {super(massage);}
}public boolean isEmpty() {//size()方法求的是顺序表有效元素个数return size() == 0;//根据比较的值来返回true或者false
}// 求顺序表的长度
public int size() {// 直接返回元素个数return this.usedSize;
}// 获取 pos 元素的位置
public int get(int pos) {if (isEmpty()) {//顺序表有可能是空的 - 抛异常来提示throw new EmptyException("当前顺序表为空!!!");}if (pos < 0 || pos >= usedSize) {//查找位置的下标可能是负数 - 也可能超过了顺序表的长度 - 抛异常来提示throw new PosWrongfulException("get获取元素的时候,pos位置不合法!!!");}return this.elem[pos]; //此时pos下标就是要找的位置
}public class MyArrayList {public static void main(String[] args) {ArrayList arrayList = new ArrayList();// 测试在顺序表末尾插入一个元素的方法arrayList.add(1);arrayList.add(2);arrayList.add(3);// 测试在顺序表中指定位置插入一个元素try{arrayList.add(1, 10);//将1下标的位置插入一个10}catch (PosWrongfulException e){ //包裹一下可能会抛出的异常e.printStackTrace();//如果有异常会提示}// 测试 get 方法System.out.println(arrayList.get(3)); // 输出 3// 打印当前的顺序表中的元素arrayList.disPlay(); }
}
根据当前顺序表中的元素位置可以看出 3 这个元素的确是在 3 下标位置上。