手工实现ArrayList2(数组扩容)
public class SxtArrayList03 <E>{
private Object[] elementData;
private int size;
public static final int DEFAULT_CAPACITY=10;
public SxtArrayList03() {
elementData = new Object[DEFAULT_CAPACITY];
}
public SxtArrayList03(int capacity) {
elementData = new Object[capacity];
}
public void add(E element) {
//什么时候扩容
if(size==elementData.length) {
//怎么扩容
Object[] newED = new Object[elementData.length*2];//10*2
System.arraycopy(elementData, 0, newED, 0, elementData.length);
elementData=newED;
}
elementData[size++] = element;
}
public String toString() {
StringBuilder sb= new StringBuilder();
sb.append("[");
for(int i=0;i<size;i++) {
sb.append(elementData[i]+",");
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
public static void main(String[] args) {
SxtArrayList03 s1= new SxtArrayList03(10);
for(int i=0;i<20;i++) {
s1.add("第"+i);
}
System.out.println(s1);
}
}
效果