本篇内容介绍了“如何用Java实现一个顺序表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

实现一个顺序表

接口实现

定义一个MyArrayList类,在类中实现以下函数

publicclassMyArrayList{}

数组的定义

publicint[]elem;//定义一个整形数组publicintusize;//usize表示数组的长度publicMyArrayList(){this.elem=newint[5];}

打印顺序表

for循环打印顺序表的每一位

publicvoiddisplay(){for(inti=0;i<this.usize;i++){System.out.print(this.elem[i]+"");}System.out.println();}

在pos位置新增元素

先定义一个isFull函数判断顺序表是否满了,满了返回true,没满则返回false

publicbooleanisFull(){if(this.usize==this.elem.length){returntrue;}returnfalse;}

将pos位置后的元素后移,顺序表顺序表长度增加一位

publicvoidadd(intpos,intdata){//判断顺序表是否满了if(isFull()){System.out.println("顺序表已满");//扩容this.elem=Arrays.copyOf(this.elem,2*this.usize);}//判断pos的合法性if(pos<0||pos>this.usize){System.out.println("pos位置不合法");return;}//将pos位置后的数字后移for(inti=this.usize-1;i>=pos;i--){this.elem[i+1]=this.elem[i];}this.elem[pos]=data;this.usize++;}

判定是否包含某个元素

publicbooleancontains(intkey){for(inti=0;i<this.usize;i++){if(this.elem[i]==key){returntrue;}}returnfalse;}

查找某个对应元素的位置

返回它的位置

publicintsearch(intkey){for(inti=0;i<this.usize;i++){if(this.elem[i]==key){returni;}}return-1;}

获取pos位置的元素

定义一个isEmpty函数判断顺序表是否为空

publicbooleanisEmpty(){returnthis.usize==0;}

publicintgetPos(intpos){//判断顺序表是否为空if(isEmpty()){return-1;}//判断pos位置是否合法if(pos<0||pos>=this.usize){return-1;}returnthis.elem[pos];}

给pos位置的元素设为value 更新为新的数字

publicvoidsetPos(intpos,intvalue){//判断顺序表是否为空if(isEmpty()){return;}//判断pos位置是否合法if(pos<0||pos>=this.usize){return;}this.elem[pos]=value;}

删除第一次出现的关键字key

查找到关键字,从关键字所在的位置开始到顺序表结束每一项前移,覆盖掉关键字,长度减少一位

publicvoidremove(intkey){intindex=search(key);if(key==-1){System.out.println("关键字不存在");return;}for(inti=key;i<this.usize-1;i++){this.elem[i]=this.elem[i+1];}this.usize--;}

获取顺序表长度

publicintsize(){returnthis.usize;}

清空顺序表

顺序表长度直接为0

publicvoidclear(){this.usize=0;}

实现这个顺序表

定义一个测试类,测试这些函数的输出

publicclassTestDemo{publicstaticvoidmain(String[]args){MyArrayListmyArrayList=newMyArrayList();//给这个顺序表写入1,2,3,4,5myArrayList.add(0,1);myArrayList.add(1,2);myArrayList.add(2,3);myArrayList.add(3,4);myArrayList.add(4,5);//打印这个顺序表myArrayList.display();//判定5这个元素是否在该顺序表中System.out.println(myArrayList.contains(5));//查找5这个元素返回它的位置System.out.println(myArrayList.search(5));//获取3位置的元素System.out.println(myArrayList.getPos(3));//将4位置的元素重新赋值为9myArrayList.setPos(4,9);//打印新的顺序表myArrayList.display();//删除第一次出现的元素4myArrayList.remove(4);//打印新的顺序表myArrayList.display();//获取顺序表的长度System.out.println(myArrayList.size());System.out.println("清空");//清空顺序表myArrayList.clear();//打印新的顺序表myArrayList.display();}}

顺序表的优缺点

优点:顺序表查找方便,知道这个元素的位置就可以直接找到这个元素。
缺点:扩容一般成2倍增长,会有一定的空间浪费。

“如何用Java实现一个顺序表”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!