我有一个二维数组,需要在每次迭代后重新初始化为0 什么是最好(最快)的方法。
或者通过执行myarray=new long[size][size];
long myarray[][]=new long[size][size]
for(.....)
{
//..do something with myarray
//..set all elements of myarray to 0 for next iteration
}
PS-我需要它在编码竞赛中进行优化。
答案 0 :(得分:1)
仅供参考,您不需要明确将所有元素设置为零。 myarray=new long[size][size]
将在元素中填充零的默认值。见 Initial Values of Variables:
每个类变量,实例变量或数组组件在创建时都使用默认值进行初始化(§15.9,§15.10.2):
对于类型
byte
,默认值为零,即(byte)0的值。对于类型
short
,默认值为零,即(短)0的值。对于类型
int
,默认值为零,即0。对于类型
long
,默认值为零,即0L 。
如果尺寸很大,设置值会更有效:
for (int i = 0; i < myarray.length; i++) {
for (int j = 0; j < myarray[i].length; j++) {
myarray[i][j] = 0;
}
}
答案 1 :(得分:1)
您可以使用Arrays.fill
功能:
for (long[] subarray : myarray) {
Arrays.fill(subarray, 0);
}