Java 实现在顺序表中获取 pos 元素的位置

文章讨论了在顺序表中处理元素位置的逻辑,包括检查顺序表是否为空、位置下标是否合法。当顺序表为空或位置下标超出范围时,程序会抛出自定义的异常。同时,提供了获取特定位置元素的方法,以及在顺序表中插入元素和显示顺序表内容的示例。
摘要由CSDN通过智能技术生成

一、思路

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 下标位置上。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与大师约会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值