题目:自义一个类MyArrayList,实现ArrayList类中的add,remove,set,get,size,clear方法相同的功能

题目:自义一个类MyArrayList,实现java.util.ArrayList类中的add,remove,set,get,size,clear方法相同的功能,并写出测... 题目:自义一个类MyArrayList,实现java.util.ArrayList类中的add,remove,set,get,size,clear方法相同的功能,并写出测试MyArrayList类中所有方法的代码。
注意:是用自己的写的方法来实现上面的功能,不是在方法当中再调用它原本的方法。谢谢。
展开
 我来答
charlycong
2013-06-25 · TA获得超过445个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:297万
展开全部
import java.util.Arrays;

public class MyArrayList {

private Object[] datas;// 存放数据
private int size;// 存放大小

public MyArrayList() {
this.size = 0;
datas = new Object[10];
}

public boolean add(Object obj) {
ensureCapacity(size + 1);
datas[size++] = obj;
return true;
}

public Object remove(int index){
RangeCheck(index);
Object oldValue =  datas[index];

int numMoved = size - index - 1;
if (numMoved > 0)
    System.arraycopy(datas, index+1, datas, index,
     numMoved);
datas[--size] = null;

return oldValue;
}

public Object set(int index,Object obj){
RangeCheck(index);
Object oldValue =  datas[index];

datas[index] = obj;
return oldValue;
}

public Object get(int index){
RangeCheck(index);

return datas[index];
}

public int size() {
return size;
}

public void clear(){
for (int i = 0; i < datas.length; i++) {
datas[i] = null;
}

size = 0;
}

public void ensureCapacity(int minCapacity) {
int oldCapacity = datas.length;
if (minCapacity > oldCapacity) {
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
datas = Arrays.copyOf(datas, newCapacity);
}
}

private void RangeCheck(int index) {
if (index >= size)
    throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);
    }
}

public class TestMyArrayList {
public static void main(String[] args) {
MyArrayList list = new MyArrayList();
list.add("test1");
list.add("test2");
list.add("test3");
list.add("test4");
System.out.println("size:"+list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(i+":"+list.get(i));
}

Object oldValue = list.set(2, "test5");
System.out.println("oldValue:"+oldValue);
System.out.println("newValue:"+list.get(2));

list.remove(3);
System.out.println("size:"+list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(i+":"+list.get(i));
}

list.clear();
System.out.println("size:"+list.size());

}
}
更多追问追答
追问
请问这个代码是和它的源代码是一样的吧?我就是有点不太懂它那ensureCapacity方法和RangeCheck方法的,请问你能注释一下吗?谢谢
追答
这个我也看着源代码写的。ensureCapacity主要是在Add的时候去判断对象数组的长度,如果已经满了就要扩容的嘛,RangeCheck主要是在按index添加,更新删除的时候,判断index是否越界,如果index>=size,这个时候对象数组中的第index根本不存在的嘛。
wy127116
2013-06-25 · TA获得超过4607个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:203万
展开全部
才给30分 我都不想做了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式