¿Cómo lleno matrices en Java?


83

Sé cómo hacerlo normalmente, pero podría jurar que podría completar como un [0] = {0,0,0,0}; ¿Cómo lo haces de esa manera? Probé Google, pero no obtuve nada útil.


1
La pregunta real que debería hacerse es cómo hacer que esto funcione: a [0] = someFunction (4, 0) ;. Por esa razón, la respuesta "correcta" seleccionada no es útil.
HoldOffHunger

Respuestas:


63

También puede hacerlo como parte de la declaración:

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

11
int [] a = new int [4] lograría lo mismo, ya que 0 es el valor predeterminado.
Zach Scrivena

5
O int [] a = {0, 0, 0, 0}; . Solo necesita el nuevo int [] si la constante no se usa inmediatamente en una declaración.
starblue

4
esto no es útil cuando tiene una gran variedad. La respuesta de @ cdmckay es mejor.
Felipe Leão

No olvide la antigua regla de programación: "Si se encuentra copiando / pegando código, está haciendo algo mal". El número de ceros, o cualquier valor predeterminado, se está copiando y pegando aquí.
HoldOffHunger

262

Consulte los métodos Arrays.fill .

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

21
+1 porque no sabía sobre el método Arrays.fill (). Siempre lo hice con un bucle for. : D
Spoike

8
@GrantGalitz En realidad, no estoy convencido de eso, ¿tienes un enlace a un artículo o smt? Porque, a diferencia de las Systemclases, java.util.Arrayses una clase implementada por Java, y mirar a través de la fuente muestra que no es diferente de un ciclo normal.
Pacerier

7
Las matrices de ints se inicializan con 0, por lo que la segunda línea no es necesaria en el ejemplo anterior.
Patrick Brinich-Langlois

6
@ PatrickBrinich-Langlois: Todavía podría valer la pena indicar su intención de que se ponga a cero.
cdmckay

16

Arrays.fill(). El método está sobrecargado para diferentes tipos de datos e incluso hay una variación que llena solo un rango específico de índices.


16

En Java-8, puede utilizar IntStreampara producir un flujo de números que desea repetir y luego convertirlo en una matriz. Este enfoque produce una expresión adecuada para su uso en un inicializador:

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

Arriba, sizey valueson expresiones que producen la cantidad de elementos que desea repetir y el valor que se repite.

Manifestación.


10
Arrays.fill(arrayName,value);

en 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]+" ");
}

Salida

5 6 9 2 10
0 0 0 0 0

5

Una matriz se puede inicializar utilizando la new Object {}sintaxis.

Por ejemplo, una matriz de Stringpuede ser declarada por:

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

Las primitivas también se pueden inicializar de forma similar mediante:

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

O una variedad de algunos Object:

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

Todos los detalles sobre las matrices en Java se describen en el Capítulo 10: Matrices en Especificaciones del lenguaje Java, tercera edición .


2

Los elementos de matriz en Java se inicializan a los valores predeterminados cuando se crean. Para los números, esto significa que se inicializan a 0, para las referencias son nulos y para los booleanos son falsos.

Para llenar la matriz con algo más, puede usar Arrays.fill () o como parte de la declaración

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

No hay atajos en Java para llenar matrices con series aritméticas como en algunos lenguajes de programación.


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

10
Bienvenido al sitio! Esta respuesta se mejoraría si pudiera agregar alguna explicación, en lugar de simplemente dejar caer un poco de código. ¿Por qué sería preferible esto a cualquiera de las otras respuestas ya proporcionadas en esta pregunta de 7 años?
Mogsdad
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.