1700443170
1700443171
return Arrays.copyOf(datas, newLen);
1700443172
1700443173
}
1700443174
1700443175
上述代码中采用的是Arrays数组工具类的copyOf方法,产生了一个newLen长度的新数组,并把原有的值拷贝了进去,之后就可以对超长的元素进行赋值了(依据类型的不同分别赋值为0、false或null),使用方法如下:
1700443176
1700443177
public static void main(String[]args){
1700443178
1700443179
//一个班级最多容量60个学生
1700443180
1700443181
Stu[]classes=new Stu[60];
1700443182
1700443183
/*classes初始化……*/
1700443184
1700443185
//偶尔一个班级可以容纳80人,数组加长
1700443186
1700443187
classes=expandCapacity(classes,80);
1700443188
1700443189
/*重新初始化超过限额的20人……*/
1700443190
1700443191
}
1700443192
1700443193
通过这样的处理方式,曲折地解决了数组的变长问题。其实,集合的长度自动维护功能的原理与此类似。在实际开发中,如果确实需要变长的数据集,数组也是在考虑范围之内的,不能因固定长度而将其否定之。
1700443194
1700443195
1700443196
1700443197
1700443199
编写高质量代码:改善Java程序的151个建议 建议62:警惕数组的浅拷贝
1700443200
1700443201
有这样一个例子,第一个箱子里有赤橙黄绿青蓝紫7色气球,现在希望在第二个箱子中也放入7个气球,其中最后一个气球改为蓝色,也就是赤橙黄绿青蓝蓝7个气球,那我们很容易就会想到第二个箱子中的气球可以通过拷贝第一个箱子中的气球来实现,毕竟有6个气球是一样的嘛,来看实现代码:
1700443202
1700443203
public class Client{
1700443204
1700443205
public static void main(String[]args){
1700443206
1700443207
//气球数量
1700443208
1700443209
int ballonNum=7;
1700443210
1700443211
//第一个箱子
1700443212
1700443213
Balloon[]box1=new Balloon[ballonNum];
1700443214
1700443215
//初始化第一个箱子中的气球
1700443216
1700443217
for(int i=0;i<ballonNum;i++){
1700443218
1700443219
box1[i]=new Balloon(Color.values()[i],i);
[
上一页 ]
[ :1.70044317e+09 ]
[
下一页 ]