如何在java中自动填充数组..?

时间:2012-12-08 11:40:46

标签: java arrays

如何使用'-1'在java中自动填充数组(特别是多维)而不使用任何循环..?

我知道默认情况下java用'0'初始化数组的所有元素。但是,如果我想一次用-1替换所有零...不使用任何循环。

有没有可用的快捷方式..?

4 个答案:

答案 0 :(得分:4)

您可以使用Arrays.fill填充一维数组,但您必须循环使用多维数组。

    int[][] array = new int[100][100];
    for (int[]a : array) {
        Arrays.fill(a, -1);
    }

你避免循环的原因是什么?如果你关心表演(而且你确定存在问题)你可能会做一些经常做的事情,那就是用一维的方式压扁你的阵列:

 int[] flatarray = new int[width*height];

然后你可以只用一个fill填充它(虽然隐藏了一个循环),许多操作会更有效率。访问一个单元格将是flatarray[x+y*width]。但您应该首先进行分析以确保您需要它。

答案 1 :(得分:1)

您可以使用Arrays.fill方法填充单维数组: -

int[] array = new int[5];
Arrays.fill(array, -1);

要填充二维数组,可以通过迭代将上述方法应用于每个单维数组。

int[][] multiArr = new int[10][10];
for (int[] innerArr: multiArr) {
    Arrays.fill(innerArr, -1);
}

答案 2 :(得分:1)

使用Arrays.fill()

public static void fill(int[][] array, int element) {
    for(int[] subarray : array) {
        Arrays.fill(subarray, element);
    }
}

答案 3 :(得分:1)

对于一维数组,您可以使用

int[] array = new int[9000];
Arrays.fill(array, -1)

但是对于多维数组,您将不得不使用循环。

你不使用循环的要求听起来相当随意,因为实际上即使在一维数组的情况下你也在使用循环。它隐藏在fill方法中。在技​​术层面上,没有办法填充数据结构而没有循环它!

你最好学会不要担心并喜欢for循环。