62,621
社区成员
发帖
与我相关
我的任务
分享
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}
//有一个初始化大小,默认是10
public ArrayList() {
this(10);
}
//当你要添加数据的时候,如果内容空间不够,会调用ensureCapacity进行扩容。
public boolean add(E e) {
ensureCapacity(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
//会调用ensureCapacity方法进行扩容
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
动态数组ArrayList
import java.util.*;
public class ArrayTest {
public static void main(String[] args){
int[] a= new int[2];
int[] b;
Scanner scanner = new Scanner(System.in);
int input =0;
int i =0;
while((input=scanner.nextInt())>=0){
a[i]=input;
i++;
if(i==a.length){
b= new int[a.length*2];
System.arraycopy(a, 0, b, 0, a.length);
a=b;
System.out.println("length expands to "+a.length);
}
}
System.out.printf("%d element(s) entered\n",i);
;
if(i < a.length){
int[] c = new int[i];
System.arraycopy(a, 0, c, 0, i);
a=c;
}
System.out.println("loop ended");
for (int e : a)
System.out.print(e+"\t");
}
}