如何在Java中填充数组?

95

我知道通常应该如何做,但我保证你可以像这样填写它 a[0] = {0,0,0,0}; 。怎么做呢?我确实尝试了谷歌,但没有得到任何有用的信息。


2
你应该问的真正问题是如何让这个工作起来:a[0] = someFunction(4, 0);。因此,所选的“正确”答案没有用处。 - HoldOffHunger
8个回答

282

查看Arrays.fill 方法。

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

22
+1 是因为我之前不知道 Arrays.fill() 方法,我一直使用 for 循环来实现。 :D - Spoike
8
我其实对此并不完全信服,你有任何文章或相关资料吗?因为与 System 类不同,java.util.Arrays 是由 Java 实现的一个类,查看源代码可以发现这个类和普通循环没有区别 - Pacerier
8
整型数组的初始值为0,因此在上面的示例中第二行不是必需的。 - Patrick Brinich-Langlois
6
为了表明你的意图,将其归零可能仍然是值得的。 - cdmckay

67

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

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

11
int[] a = new int[4]会实现同样的效果,因为0是默认值。 - Zach Scrivena
5
只有在常量没有立即用于声明时,才需要新的 int[] 数组。翻译后的句子为:"只有当常量不直接用于声明时,才需要新的 int[] 数组。",意思与原句相同,但更易懂。 - starblue
4
当数组很大时,这并不实用。@cdmckay的答案更好。 - Felipe Leão
不要忘记编程的古老规则:“如果你发现自己在复制/粘贴代码,那么你正在做错事。”这里只是复制和粘贴了零的数量或任何默认值。 - HoldOffHunger

17

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

int[] data = IntStream.generate(() -> value).limit(size).toArray();
上面的代码中,sizevalue是表达式,用于生成要重复的项目数量和被重复的值。
演示请参见此处

17

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


10
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

5

通过使用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中关于数组的所有细节都写在第10章:数组中,该章节在《Java语言规范第三版》中。


2
Java中的数组元素在创建时被初始化为默认值。对于数字来说,这意味着它们被初始化为0,对于引用来说则是null,而对于布尔值来说则是false。
要使用其他内容填充数组,你可以使用Arrays.fill()或在声明中进行设置。
int[] a = new int[] {0, 0, 0, 0};

在Java中没有像某些脚本语言那样用简便的方法填充数组,使其变成等差数列。

我不知道,但对于浮点数eclipse说这是正确的...为什么?:float[] ave = new float[] {(float) 1.2, (float) 4.3, (float) 10.2} - Mostafa

-3
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

11
欢迎来到本网站!如果您能添加一些解释,而不仅仅是放置一些代码,那么这个答案将会更好。为什么这比已经提供的其他答案更可取,这个问题已经存在了7年? - Mogsdad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接