【问题标题】:How to autofill an array in java..?如何在java中自动填充数组..?
【发布时间】:2012-12-08 11:40:45
【问题描述】:

如何在不使用任何循环的情况下使用“-1”在 java 中自动填充数组(特别是多维)?

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

有没有捷径可以使用..?

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    您可以使用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]。但您应该首先配置文件以确保您需要它。

    【讨论】:

      【解决方案2】:

      你可以使用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);
      }
      

      【讨论】:

        【解决方案3】:

        使用Arrays.fill()

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

        【讨论】:

          【解决方案4】:

          你可以使用一维数组

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

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

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

           

          你最好学会停止担心并喜欢 for 循环。

          【讨论】:

            猜你喜欢
            • 2010-10-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-11
            • 2021-09-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多