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

自定义队列

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

我们所定义的学生类:

//这个类只用于测试:

文件名: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

    

   }

 

  

}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值