delete数组实现

来源:互联网 发布:易行绍兴软件下载 编辑:程序博客网 时间:2024/06/16 04:01

更正错误:

 

List接口中,search方法的目的是返回对象,所以,返回类型应该是T而不应该是void

Publicvoid search(inti);

改成

 

PublicT search(inti);

 

首先是update,要看方法是如何定义的:

public voiddelete(int i);

 

我们自己很明白为什么这么定义。删除位于下标i的对象。

 

这个对象就是在数组里面待着。每个人都知道怎么删除了

仍然把可能异常的情况写在前面

       如果i>size-1 或者 i<0

              抛出异常,说明下标i的元素不存在

然后可以放心的删除了

      ….

 

 

@Override

    public void delete(inti) {

       if(i<0 ||i>(size-1))

           try {

              throw new Exception(i+" iserror!");

           } catch (Exceptione) {

              // TODO Auto-generatedcatch block

              e.printStackTrace();

           }

       if(i==size-1){

           //如果是最后一个元素。不用移动元素。给它nullsize--

           container[i]=null;

           size--;

       }else

       {

           //怎么删除呢,每个人都知道了。后面的依次往前移动就OK了。

           for(intj=i+1;j<=size-1;j++){

              container[j-1]=container[j];

           }

           //同样,以上移动完成后,最后一个元素就多余了。给它Null

           container[size-1]=null;

           size--;

       }     

    }



 下面测试一下

 

@Test

    public void testAdd() {

       for (inti = 0; i < 10;i++) {

           al.add(i);

       }

       System.out.println(al.toString());

    }

   

    @Test

    public void delete(){

       testAdd();

       al.delete(0);

       al.delete(8);

       System.out.println(al);

    }

 

删除任何一个位置的对象是没有问题的。


0 0
原创粉丝点击