一、思路
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 下标位置上。