【问题标题】:How do I fill arrays in Java?如何在 Java 中填充数组?
【发布时间】:2010-10-09 06:39:28
【问题描述】:

我知道如何正常填写,但我可以发誓您可以像 a[0] = {0,0,0,0}; 这样填写你是怎么做到的?我确实尝试了 Google,但没有得到任何帮助。

【问题讨论】:

  • 你应该问的真正问题是如何使这项工作:a[0] = someFunction(4, 0);。因此,选择的“正确”答案没有用。

标签: java arrays


【解决方案1】:

查看Arrays.fill 方法。

int[] array = new int[4];
Arrays.fill(array, 1); // [1, 1, 1, 1]

【讨论】:

  • +1 因为我不知道 Arrays.fill() 方法。我总是用for循环来做。 :D
  • @GrantGalitz 我实际上对此并不相信,你有文章或 smt 的链接吗?因为与System类不同,java.util.Arrays是Java实现的类,看源码发现它与普通循环没有区别
  • 整数数组初始化为 0,因此在上面的示例中第二行不是必需的。
  • @PatrickBrinich-Langlois:为了表明您将其归零的意图,这仍然是值得的。
【解决方案2】:

您也可以将其作为声明的一部分:

int[] a = new int[] {0, 0, 0, 0};

【讨论】:

  • int[] a = new int[4] 会完成同样的事情,因为 0 是默认值。
  • 或 int[] a = {0, 0, 0, 0}; .如果常量没有立即在声明中使用,您只需要新的 int[]。
  • 当你有一个大数组时这没有用。 @cdmckay 的回答更好。
  • 不要忘记古老的编程规则:“如果你发现自己在复制/粘贴代码,那你就做错了。”零的数量,或任何默认值,只是被复制并粘贴到这里。
【解决方案3】:

Arrays.fill()。该方法针对不同的数据类型进行了重载,甚至还有一个仅填充指定索引范围的变体。

【讨论】:

    【解决方案4】:

    在 Java-8 中,您可以使用 IntStream 生成要重复的数字流,然后将其转换为数组。这种方法产生了一个适合在初始化器中使用的表达式:

    int[] data = IntStream.generate(() -> value).limit(size).toArray();
    

    在上面,sizevalue 是产生您想要重复的项目数和重复值的表达式。

    Demo.

    【讨论】:

      【解决方案5】:
      Arrays.fill(arrayName,value);
      

      在java中

      int arrnum[] ={5,6,9,2,10};
      for(int i=0;i<arrnum.length;i++){
        System.out.println(arrnum[i]+" ");
      }
      Arrays.fill(arrnum,0);
      for(int i=0;i<arrnum.length;i++){
        System.out.println(arrnum[i]+" ");
      }
      

      输出

      5 6 9 2 10
      0 0 0 0 0
      

      【讨论】:

        【解决方案6】:

        可以使用new Object {} 语法初始化数组。

        例如,String 的数组可以通过以下任一方式声明:

        String[] s = new String[] {"One", "Two", "Three"};
        String[] s2 = {"One", "Two", "Three"};
        

        原语也可以通过以下方式进行类似的初始化:

        int[] i = new int[] {1, 2, 3};
        int[] i2 = {1, 2, 3};
        

        或者一些Object的数组:

        Point[] p = new Point[] {new Point(1, 1), new Point(2, 2)};
        

        所有关于Java数组的细节都写在Chapter 10: ArraysThe Java Language Specifications, Third Edition中。

        【讨论】:

          【解决方案7】:

          Java 中的数组元素在创建时被初始化为默认值。对于数字,这意味着它们被初始化为 0,对于引用,它们是 null,对于布尔值,它们是 false。

          要使用其他内容填充数组,您可以使用 Arrays.fill() 或作为声明的一部分

          int[] a = new int[] {0, 0, 0, 0};
          

          在 Java 中没有像某些脚本语言那样用算术级数填充数组的快捷方式。

          【讨论】:

          • 我不知道,但对于 float eclipse 来说这是正确的...为什么?:float[] ave = new float[] {(float) 1.2, (float) 4.3, (float) 10.2}
          【解决方案8】:
          int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
          

          【讨论】:

          • 欢迎来到本站!如果您可以为它添加一些解释,而不是仅仅放下一些代码,这个答案将会得到改进。为什么这比这个 7 年前的问题已经提供的任何其他答案更可取?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-28
          • 1970-01-01
          相关资源
          最近更新 更多