您的位置:首页 > 游戏 > 游戏 > 海外域名注册商_合作建站方案_seo搜索优化是什么意思_找关键词

海外域名注册商_合作建站方案_seo搜索优化是什么意思_找关键词

2024/10/5 23:26:39 来源:https://blog.csdn.net/kkksij/article/details/142321006  浏览:    关键词:海外域名注册商_合作建站方案_seo搜索优化是什么意思_找关键词
海外域名注册商_合作建站方案_seo搜索优化是什么意思_找关键词

顺序表的定义: 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

我们现在要实现的顺序表功能有:增(add)、删(remove)、查(get)   改(set);

由于顺序表底层是数组,所以要创建接口在数组中包含以上功能。

步骤:

1.基本框架构建:

1.1创建一个包,里面包含一个功能接口和数组类。

1.2.在接口中写下要包含的功能。

1.3.在MyArrayList 创建基本属性:

(1).数组和数组中已经包含的元素(UsedSize),同时设置好你这个数组的最大容量(DEFAULT_CAPACITY).

(2).通过构造方法来创建一个新的数组。

2.各种方法具体的实现步骤:

2.1   add(int data )的实现:在usedsize后添加新的元素:

这幅图中,usedSize = 5  则此时我们就在索引为5下添加新元素。

怎么添加?首先要判断这个数组空间是否已满,即比较UsedSize(现有元素)和 数组长度是否已满,满的话,通过Arrays.copyOf来进行扩容,将数组长度变为原来2倍。再将新元素值赋给数组。 否则直接赋值即可。

2.2 add(int pos , int data); 在某个位置处插入新元素。

在插入前,我们需要考虑元素插入的位置是否正确,比如,你不能在-1位置处插入元素(越界),也不能在超过UsedSize位置处插入元素,因为待插入元素前后都应有元素。

此时我们就要自定义一个异常类: PosIllegal 用来检测是否插入位置错误

这个类要继承于RuntimeException 类(是 Java 中一个重要的异常类,属于 java.lang 包,它是所有运行时异常的基类,提供了一种处理那些通常不需要显式捕获或声明的异常的机制)。

之后再创建这个类的构造方法,继承父类。

再回到MyArrayList类中,创建一个检查位置是否正确的类:CheckPos,并在其中指示可能出现的异常。代码示例如下:

private void CheckPos(int pos) throws PosIllegal{  //方法可能会抛出的异常---PosIllegal异常,让调试者处理if(pos<0||pos>UsedSize){throw new PosIllegal("pos位置不合法"); // 实行抛出异常操作}}

同时,也要判断数组是否已满,这里,我们便要用到try--catch来抛出和捕捉异常

具体代码如下:

public void add(int pos, int data) {try{//可能会抛出的异常CheckPos(pos);if(isFull()){grow();}//功能实现:开始挪动元素for (int i = UsedSize-1; i >=pos ; i++) {array[i+1] = array[i];}array[pos] = data;UsedSize++;}catch(PosIllegal e){//捕捉异常:System.out.println("插入元素位置pos不合法");e.printStackTrace();//printStackTrace 是 Throwable 类中的一个方法,通常用于输出异常的详细信息和堆栈跟踪。}}
2.3:   public boolean contains(int toFind) 数组中是否包含待查找元素

这里可直接用fori循环将数组内的元素一 一与toFind比较,如果有,返回true,否则false

具体代码如下:

 public boolean contains(int toFind) {for (int i = 0; i < UsedSize; i++) {if(array[i] == toFind){return true;}}return false;}

2.4: public int get(int pos)   得到某一个位置的元素。

这里我们不得不考虑一个问题:这个数组是否为空数组。

此时就要实现一个检查数组是否为空的方法: private void CheckEmpty() ,也要创建一个

EmptyException异常类。

同时查找过程中这个元素位置也要有限制,和先前不同,这次Pos可以等于UsedSize(不妨碍元素查找)。具体代码如下:

public class EmptyException extends RuntimeException{public EmptyException(){}public EmptyException(String msg){super(msg);}
}
private void checkPos2(int pos) throws PosIllegal{if(pos<0 || pos>= UsedSize){throw new PosIllegal("pos位置不合法");}}public boolean isEmpty(){return UsedSize == 0;}private void CheckEmpty(){if(isEmpty()){throw new EmptyException("顺序表为空");}}
public int get(int pos) {try{//抛出异常CheckEmpty(); //检查数组是否为空checkPos2(pos); //元素位置是否异常return array[pos];}catch (PosIllegal e){//捕捉异常e.printStackTrace();}catch (EmptyException e){e.printStackTrace();//printStackTrace 是 Throwable 类中的一个方法,通常用于输出异常的详细信息和堆栈跟踪。}return -1;}
2.5 public void set(int pos, int value)  //再某个位置设置新的元素。

这里也要考虑数组是否为空以及元素位置是否正确,和2.4类似。代码如下:

@Overridepublic void set(int pos, int value) {try{CheckEmpty();checkPos2(pos);array[pos] = value;}catch(PosIllegal e){e.printStackTrace();}catch (EmptyException e ){e.printStackTrace();}}

2.6:public void remove(int toRemove)消除某个位置的元素:

传入要消除的元素值,再创建 public int indexOf(int toFind) 方法(for循环查找与toRemove相同的元素,返回索引值) 进而得到这个元素的位置。

位置拿到之后,怎么消除?

如图,若要消除pos位置元素,只需将索引3的元素前移覆盖索引2位置,再将索引4移动到索引3的位置即可。 具体代码如下:

@Overridepublic void remove(int toRemove) {try{//抛出异常CheckEmpty(); //数组不为空int pos = indexOf(toRemove); //得到待消除元素的位置if(pos == -1){return;}for (int i = pos; i < UsedSize-1; i++) { //?array[i] = array[i+1];  //覆盖}UsedSize--;}catch (EmptyException e){//处理/捕捉异常e.printStackTrace();}}

2.7:剩下的简单代码便不再一 一赘述

@Overridepublic int size() {return this.UsedSize;}@Overridepublic void clear() {//清空数组UsedSize = 0;}@Overridepublic void display() {  //展示数组for (int i = 0; i < UsedSize; i++) {System.out.println(array[i]+" ");}}
}

今天就给大家分享到这里,bb!

喜欢的老铁来个三联吧!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com