更正错误:
List接口中,search方法的目的是返回对象,所以,返回类型应该是T而不应该是void
Publicvoid search(int i);
改成
PublicT search(int i);
首先是update,要看方法是如何定义的:
public voiddelete(int i);
我们自己很明白为什么这么定义。删除位于下标i的对象。
这个对象就是在数组里面待着。每个人都知道怎么删除了
仍然把可能异常的情况写在前面
如果i>size-1 或者 i<0
抛出异常,说明下标i的元素不存在
然后可以放心的删除了
….
@Override
public void delete(int i) {
if(i<0 || i>(size-1))
try {
throw new Exception(i+" iserror!");
} catch (Exception e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
if(i==size-1){
//如果是最后一个元素。不用移动元素。给它null。size--
container[i]=null;
size--;
}else
{
//怎么删除呢,每个人都知道了。后面的依次往前移动就OK了。
for(int j=i+1;j<=size-1;j++){
container[j-1]=container[j];
}
//同样,以上移动完成后,最后一个元素就多余了。给它Null
container[size-1]=null;
size--;
}
}
下面测试一下
@Test
public void testAdd() {
for (int i = 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);
}
删除任何一个位置的对象是没有问题的。