/*
自己实现一个Arraylist,帮助我们理解Arraylist类的底层结构
*
*
*/
public class SxtArrayList {
private Object[] elementData;
private int size;
public SxtArrayList(){
this(10);
}
public SxtArrayList(int initialCapacity){
if(initialCapacity<0){
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
elementData =new Object[initialCapacity];
}
public void add(Object obj){
//数组扩容,和数据的拷贝。
if (size==elementData.length) {
Object[] newArray=new Object[size*2+1];
//System.arraycopy(elementData, 0, newArray, 0, elementData.length);
for(int i=0;i<elementData.length;i++){
newArray[i]=elementData[i];
}
elementData=newArray;//将老的篮子替换成新的篮子了。
}
elementData[size++]=obj;
}
public static void main(String[] args) {
SxtArrayList sxtArrayList=new SxtArrayList(2);
sxtArrayList.add(1);
sxtArrayList.add(2);
sxtArrayList.add(3);
System.out.println(sxtArrayList.size);
}
}
ArrayList的底层代码部分实现
最新推荐文章于 2023-08-23 19:38:05 发布