from cookbook 的一个例子
包含了他的一个com-darwinsys-util.jar,去他的网站看看
他的思想是重新定义一个更大的数组,并将前一个数组的元素拷贝到新数组里去。
import java.util.*;
public class Array2{
public static void main(String[] argv) {
int nDates = 0;
final int MAX = 10;
Calendar dates[] = new Calendar[MAX];
Calendar c;
StructureDemo source = new StructureDemo(21);
while ((c=(Calendar)source.getDate()) != null) { // 重新定义数组
if (nDates >= dates.length) {
Calendar tmp[] = new Calendar[dates.length + 10];
System.arraycopy(dates, 0, tmp, 0, dates.length);
dates = tmp; // copies the array reference
}
dates[nDates++] = c;
}
System.out.println("Array size = " + dates.length);
}
}
包含了他的一个com-darwinsys-util.jar,去他的网站看看
他的思想是重新定义一个更大的数组,并将前一个数组的元素拷贝到新数组里去。
import java.util.*;
public class Array2{
public static void main(String[] argv) {
int nDates = 0;
final int MAX = 10;
Calendar dates[] = new Calendar[MAX];
Calendar c;
StructureDemo source = new StructureDemo(21);
while ((c=(Calendar)source.getDate()) != null) { // 重新定义数组
if (nDates >= dates.length) {
Calendar tmp[] = new Calendar[dates.length + 10];
System.arraycopy(dates, 0, tmp, 0, dates.length);
dates = tmp; // copies the array reference
}
dates[nDates++] = c;
}
System.out.println("Array size = " + dates.length);
}
}
应该先生成一个数组,在容量不够的情况下,
重新分配个新数组,然后把原来的拷贝到新数组。
此处就有一个策略问题,
可以在每次分配的时候,数组增加固定大小,
也可以按原来的一个比例来扩大,比如StringBuffer
就是按原来的2倍大小来扩充的。
string[] bb = new String[3];
System.arraycopy(aa, 0, bb, 0, aa.lenth);
bb[3] = "3";