自定义队列(一)小试牛刀_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 自定义队列(一)小试牛刀

自定义队列(一)小试牛刀

 2013/7/18 0:13:39  香煎马鲛鱼  程序员俱乐部  我要评论(0)
  • 摘要:自定义队列学过编程语言的同学都知道,我们可以用数组来储存数据,可是数组有一个非常大的弊端就是一旦定义后就无法改变其长度,可是在很多情况下我们是无法预计我们所要存的数据有多少的,比如:我需要存储多个的学生信息,但是先却不知道学生的个数,此事,定义一个自定义队列,就可以很快解决,下面我给大家做个示范,如何定义自定义列表:我们所定义的学生类://这个类只用于测试:文件名:Student此文件定义了Student类,为了节约时间,只定义了两个属性,名字和年龄
  • 标签:队列 自定义

class="MsoNormal">自定义队列

学过编程语言的同学都知道,我们可以用数组来储存数据,可是数组有一个非常大的弊端就是一旦定义后就无法改变其长度,可是在很多情况下我们是无法预计我们所要存的数据有多少的,比如:我需要存储多个的学生信息,但是先却不知道学生的个数,此事,定义一个自定义队列,就可以很快解决,下面我给大家做个示范,如何定义自定义列表:

我们所定义的学生类:

//这个类只用于测试:

文件名Student

此文件定义了Student类,为了节约时间,只定义了两个属性,名字和年龄,下面我们将这给类所生成的对象存入我们的自定义队列中:

package Aprogram;

?

publicclass Student {

?? private String name;

?? privateintold;

??

?? Student(){

????

?? }

?? Student(String name,int old){

?? this.name = name;

?? this.old = old;

?? }

??? publicvoid showEverything(){

??? ? System.out.println("姓名:"+name+"?? 年龄:"+old);

??? }

}

文件名:Myfirstlist接口

定义接口很大的好处是规范,明确类需要拥有什么样的方法

package Aprogram;

?

publicinterface Myfirstlist<E> {

?? void add(E e);

?? void delet();

?? void delet(int index);

?? E get(int index);

?? int getLength();

?? void insert(E e,int index);

?? void addAll(Myfirstlist<E> list);

?

}

文件名:MyFirst

下面我将主要介绍自定义队列的增加元素,减少元素和get队列中的某个元素的方法

package Aprogram;

?

publicclass MyFirst<E> implements Myfirstlist<E>{

//继承接口

?? private Object[] srcA = new Object[0];//首先创建一个只有一个元素的数组,做为属性

?? //@Override

?? public MyFirst(){

????

?? }

//声明原始长度

?? public MyFirst(int OrignalLength){

???? Object[] srcA = new Object[OrignalLength];

???? this.srcA = srcA;

?? }//构造方法

//声明原始长度,增长率:(未完成)

?? public MyFirst(int OrignalLength,int increaseCount){

????

?? }

//添加一个元素

?? publicvoid add(E e) {

???? ???? // TODO Auto-generated method stub

?

???? //如果初始数组没满

?? if(srcA[srcA.length-1]==null){

???? for(int i = 0; i<srcA.length;i++){

??????? if(srcA[i]==null){

????????? srcA[i]=e;break;

??????? }

???? }

??? }

?? //如果已经满了

?? else{

???? //新建一个新的Student数组

???? Object[] text = new Object[srcA.length+1];

???? //把元素放在新数组最后

???? text[text.length-1] = e;

//将原数组的元素一一放入,新数组

???? for(int i = 0;i<srcA.length;i++){

??????? text[i] = srcA[i];

???? }

???? srcA = text;

}//

?? }

?

?? @Overridepublicvoid delet() {

???? // TODO Auto-generated method stub

???? //(未完成)

?? }

?

?? @Override

//删除指定位置的元素

?? publicvoid delet(int index) {

???? // TODO Auto-generated method stub

???? Object[] text = new Object[srcA.length-1];

//申请一个少一个元素的数组

???? for(int i = 0;i<index;i++){

??????? text[i] = srcA[i];

???? }//在删除点之前的元素照常添加

???? for(int i = index+1; i<srcA.length;i++){

??????? text[i-1] = srcA[i];//把位置空出来,继续添加

???? }

???? srcA = text;//用新数组代替原数组

????

?? }

?

?? @Override

?? publicint getLength() {

????

???? // TODO Auto-generated method stub

???? returnsrcA.length;//(此方法不完整,没有考虑到初始长度,读者可以自己修改)

?? }//获取长度

?

?? @Override

?? public E get(int index) {

???? E st = (E)srcA[index];

???? return st;

?? }

?

?? @Override

?? publicvoid addAll(Myfirstlist<E> list) {

???? // TODO Auto-generated method stub

???? //接上新队列

?? }

?

?? @Override

?? publicvoid insert(E e, int index) {

???? // TODO Auto-generated method stub

????

?? }

?

??

}

(未完成项目之后会公布答案~大家稍安勿躁哈)

发表评论
用户名: 匿名