如何在Java中填充数组?


83

我知道该怎么做,但我可以保证您可以像[[0] = {0,0,0,0};那样填写;你是怎么做到的?我确实尝试过Google,但没有任何帮助。


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

Answers:


63

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

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

11
int [] a = new int [4]将完成相同的操作,因为默认值为0。
Zach Scrivena 09年

5
或int [] a = {0,0,0,0}; 。如果常量未在声明中立即使用,则仅需要新的int []。
starblue 2009年

4
当阵列很大时,这没有用。@cdmckay的答案更好。
FelipeLeão2014年

不要忘记古老的编程规则:“如果您发现自己在复制/粘贴代码,则说明您做错了什么。” 零的数目或任何默认值,仅在此处复制并粘贴。
HoldOffHunger

262

Arrays.fill方法。

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

21
+1是因为我对Arrays.fill()方法一无所知。我总是用for循环来做到这一点。:D
Spoike

8
@GrantGalitz我实际上对此并不确信,您是否有文章或smt的链接?因为与System类不同,它java.util.Arrays是由Java实现的类,并且通过查看源代码可以发现它与常规循环没有什么不同
Pacerier,2011年

7
int数组初始化为0,因此在上面的示例中第二行不是必需的。
Patrick Brinich-Langlois

6
@ PatrickBrinich-Langlois:为了表明您将其归零的意图,仍然值得。
cdmckay 2014年


16

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

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

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

演示


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数组的所有详细信息,请参见《 Java语言规范》第三版第10章:数组


2

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

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

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

Java中没有捷径可以像某些脚本语言一样用算术序列填充数组。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.