【杰哥爱算法】自己写了一个简陋的集合,望大神一起交流,给意见
JG2JG 2015-05-26 11:21:02 package cn.naiwaer.test;
/**
* 自定义的ArrayList集合
* @author FH
*
*/
public class MyArrayList {
private Object[] arr = null;
/**
* 向集合中添加元素
* @param obj 需要添加的元素
*/
public void add (Object obj){
if(arr!=null){
int num = arr.length;
System.out.println(num);
if(arr[num-1]!=null){
Object objTem[] = new Object[num+1];
for(int i=0;i<arr.length;i++){
objTem[i]=arr[i];
}
objTem[num]=obj;
arr=objTem;
}else{
arr[num-1]=obj;
}
}else{
arr= new Object[1];
this.add(obj);
}
}
public Object[] getList(){
return arr;
}
/**
* 从集合中移除元素
* @param index 要移除元素的下标,下标从0开始
* @return
*/
public boolean remove(int index){
if(index<arr.length&&index>=0){
arr[index]=null;
Object[] temObj = new Object[arr.length-1];
//将数组分为两次迭代,直接将删除元素下标前的所有元素赋值给新的数组,从而跳过index这一项避免每次循环都要进行判断,从而提高性能
for(int i=0;i<index;i++){
temObj[i]=arr[i];
}
//跳过被删除元素下标,将后面的继续赋值给新的数组
if(index<arr.length){
for(int i=index+1;i<arr.length;i++){
temObj[i-1]=arr[i];
}
}
arr=temObj;
return true;
}else{
return false;
}
}
}