本帖最后由 罗雪梅 于 2012-9-21 13:54 编辑
模仿的是arrayList的底层实现,其中标红色的话句都是把数组中的元素操作给另一个,但是一个是整体就赋过去了,另一个则遍历过去的,我试了把2下面遍历的语句换成和第一句一样的,也可以达到一样的效果,但不是明白为什么不用遍历就能直接这样做???
class MyList
{
private Object[] old;
private int size=0;
public MyList(){
this(10);
}
public MyList(int init){
old=new Object[init];
}
public void add(Object obj){
changeArraySize();
old[size++]=obj;
}
private void changeArraySize(){
Object[] oldArr=old; //将old数组中的内容保存
int length=oldArr.length+(int)(oldArr.length*0.5); //根据old数组长度得到一个新长度 50%
old=new Object[length]; //old重新定义,长度增长
for(int i=0;i<size;i++){ //oldArr 中的元素赋值给old
old=oldArr;
}
}
public Object get(int index){
return old[index];
}
public int size(){
return size;
}
public String toString(){
StringBuilder build=new StringBuilder();
build.append("[");
for(int i=0;i<size;i++){
if(i==size-1){
build.append(old);
}else{
build.append(old).append(",");
}
}
build.append("]");
return build.toString();
}
}
|