java提供的数组有个特点: 当数组元素的个数确定后,就不能再追加元素了。
也就是说,数组的大小在创建的时候就固定了。
现在请你来写一个智能数组类 SmartArray,它能够根据需要动态地分配空间。
实际上,它只不过是在其它位置分配新的数组,然后把旧的数据拷贝过去。
请提供数组访问方法:
int get(int idx); // 返回指定位置的元素值
也就是说,数组的大小在创建的时候就固定了。
现在请你来写一个智能数组类 SmartArray,它能够根据需要动态地分配空间。
实际上,它只不过是在其它位置分配新的数组,然后把旧的数据拷贝过去。
请提供数组访问方法:
int get(int idx); // 返回指定位置的元素值
void set(int idx, int value); // 对指定的下标元素设置新值。当然,如果下标超出了原来数组的大小,则自动分配新的空间。
public class MyList {
int[] s = new int[5];
public int[] create(int i) {
int[] a = new int[i + 1];
System.arraycopy(s, 0, a, 0, s.length);
s = a;
return s;
}
public void set(int index, int value) {
if (s.length > index) {
s[index] = value;
} else {
create(index);
s[index] = value;
}
}
public int get(int index) {
if (s.length > index) {
return s[index];
}
return -1;
}
public static void main(String[] args) {
MyList t = new MyList();
t.s[0] = 6;
t.s[1] = 1;
t.s[2] = 0;
t.s[3] = 11;
t.s[4] = 23;
t.s[4] = 777;
t.set(12, 9);
for (int i = 0; i < t.s.length; i++) {
System.out.print(t.s[i] + " ");
}
}
}
Conclusion
6 1 0 11 777 0 0 0 0 0 0 0 9