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

news/2024/11/28 11:57:00/

一、思路

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


http://www.ppmy.cn/news/243855.html

相关文章

如何在Vue模板中自定义组件?

首先&#xff0c;我们需要创建一个Vue组件。在Vue中&#xff0c;组件可以扩展HTML元素&#xff0c;使其具有动态行为和数据绑定。下面是一个简单的例子&#xff1a; <template> <div> <h1>{{ title }}</h1> <p>{{ message }}</p> <…

【 Python 全栈开发 ⑮ 】函数、递归(推)函数、匿名函数与内置函数

文章目录 一、函数&#xff08;1&#xff09;函数的构成函数名参数返回值 &#xff08;2&#xff09;局部变量与全局变量 二、递归函数与递推函数&#xff08;1&#xff09;递归函数&#xff08;2&#xff09;递推函数 三、匿名函数四、内置函数 一、函数 Python 函数是一段封…

新手必看,如何将外部流量吸引到你的亚马逊页面?

无论是营销、定价、质量还是客户服务&#xff0c;亚马逊上竞争激烈的环境都要求卖家无论做什么都要付出更多努力。例如&#xff0c;在增加列表的覆盖面时&#xff0c;您不应只关注已经在亚马逊市场漫游的购物者。您还必须追求它之外的潜在客户。这只有通过将外部流量吸引到您的…

P67 ( 2-17)

共有4个站进行码分多址CDMA通信&#xff0c;4个站的码片序列为&#xff1a; A:(-1-1-111-111) B:(-1-11-1111-1) C:(-11-1111-1-1) D:(-11-1-1-1-11-1) 现在收到这样的码片序列&#xff1a;&#xff08;&#xff0d;1&#xff0b;1&#xff0d;3&#xff0b;1&…

谷粒商城P67创建统一异常处理类

1.创建一个枚举类&#xff0c;指定错误代码以及错误消息 public enum BizCodeEnume {UNKNOW_EXCEPTION(10000,"系统未知异常"),VAILD_EXCEPTION(10001,"参数格式校验失败");private int code;private String msg;public int getCode() {return code;}publ…

【计算机网络】湖科大微课堂笔记 p67-70 应用层概述、客户-服务器方式和对等方式、动态主机配置协议DHCP、域名系统DNS

文章目录 应用层概述客户-服务器方式和对等方式动态主机配置协议DHCP小结 域名系统DNS小结一些例题 应用层概述 客户-服务器方式和对等方式 客户/服务器方式 对等方式 动态主机配置协议DHCP DHCP的作用 DHCP工作过程 DHCP中继代理 小结 域名系统DNS 域名系统DNS的作…

计算机网络第七版(谢希仁教授著)第二章: 物理层 课后习题部分详细答案

第2章 物理层课后答案 (1) P67 2-06 数据在信道中的传输速率受哪些因素的限制?信噪比能否任意提高?香农公式在数据通信的意思是什么?”比特/秒”和”码元/秒”有何区别? 1.数据在信道中的传输速率受到带宽和信噪比等因素的限制 2.信噪比不能任意提高 3.香农公…

【操作系统】王道考研 p67 设备的分配与回收

设备的分配与回收 知识总览 在设备独立性软件里。 设备分配时应考虑的因素 设备的分配算法&#xff1a; 如&#xff1a; 先来先服务优先级高者优先短任务优先… 从安全性上考虑的两种设备分配方式&#xff1a; 保障了安全就降低了效率。 静态分配和动态分配 静态分配&…