Wie fülle ich Arrays in Java?


82

Ich weiß, wie es normal geht, aber ich könnte schwören, dass Sie es wie folgt ausfüllen könnten: [0] = {0,0,0,0}; Wie machst du das so? Ich habe Google ausprobiert, aber nichts Hilfreiches bekommen.


1
Die eigentliche Frage, die Sie sich stellen sollten, ist, wie dies funktioniert: a [0] = someFunction (4, 0);. Aus diesem Grund ist die ausgewählte "richtige" Antwort nicht sinnvoll.
HoldOffHunger

Antworten:


62

Sie können dies auch als Teil der Erklärung tun:

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

10
int [] a = new int [4] würde dasselbe erreichen, da 0 der Standardwert ist.
Zach Scrivena

5
Oder int [] a = {0, 0, 0, 0}; . Sie benötigen das neue int [] nur, wenn die Konstante nicht sofort in einer Deklaration verwendet wird.
Starblue

4
Dies ist nicht nützlich, wenn Sie ein großes Array haben. @ cdmckays Antwort ist besser.
Felipe Leão

Vergessen Sie nicht die uralte Programmierregel: "Wenn Sie feststellen, dass Sie Code kopieren / einfügen, machen Sie etwas falsch." Die Anzahl der Nullen oder ein beliebiger Standardwert wird hier nur kopiert und eingefügt.
HoldOffHunger

258

Schauen Sie sich die Arrays.fill- Methoden an.

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

21
+1, weil ich nichts über die Arrays.fill () -Methode wusste. Ich habe es immer mit einer for-Schleife gemacht. : D
Spoike

8
@GrantGalitz Davon bin ich eigentlich nicht überzeugt, hast du einen Link zu einem Artikel oder einer SMS? Denn im Gegensatz zu den SystemKlassen java.util.Arraysist eine Klasse von Java implementiert, und das Durchsuchen der Quelle zeigt, dass sie sich nicht von einer normalen Schleife unterscheidet.
Pacerier

7
Ints-Arrays werden mit 0 initialisiert, sodass die zweite Zeile im obigen Beispiel nicht erforderlich ist.
Patrick Brinich-Langlois

6
@ PatrickBrinich-Langlois: Es könnte sich trotzdem lohnen, Ihre Absicht anzuzeigen, dass es auf Null gesetzt wird.
CDMckay

16

Arrays.fill(). Die Methode ist für verschiedene Datentypen überladen, und es gibt sogar eine Variation, die nur einen bestimmten Bereich von Indizes ausfüllt.


16

In Java-8 können Sie IntStreameinen Strom von Zahlen erstellen, die Sie wiederholen möchten, und ihn dann in ein Array konvertieren. Dieser Ansatz erzeugt einen Ausdruck, der zur Verwendung in einem Initialisierer geeignet ist:

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

Oben sizeundvalue sind Ausdrücke, die die Anzahl der Elemente, die Sie wiederholen möchten, und den Wert, der wiederholt werden soll, erzeugen.

Demo.


10
Arrays.fill(arrayName,value);

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

Ausgabe

5 6 9 2 10
0 0 0 0 0

5

Ein Array kann mit dem initialisiert werden new Object {} Syntax .

Zum Beispiel kann ein Array Stringvon entweder deklariert werden durch:

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

Primitive können auch auf ähnliche Weise initialisiert werden:

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

Oder eine Reihe von einigen Object:

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

Alle Details zu Arrays in Java sind in Kapitel 10: Arrays in den Java-Sprachspezifikationen, dritte Ausgabe, beschrieben .


2

Array-Elemente in Java werden beim Erstellen auf Standardwerte initialisiert. Für Zahlen bedeutet dies, dass sie auf 0 initialisiert sind, für Referenzen sind sie null und für Boolesche Werte sind sie falsch.

Um das Array mit etwas anderem zu füllen, können Sie Arrays.fill () oder als Teil der Deklaration verwenden

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

In Java gibt es keine Verknüpfungen zum Füllen von Arrays mit arithmetischen Reihen wie in einigen Skriptsprachen.


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

10
Willkommen auf der Seite! Diese Antwort würde verbessert, wenn Sie eine Erklärung dafür hinzufügen könnten, anstatt nur einen Code abzulegen. Warum sollte dies einer der anderen Antworten vorzuziehen sein, die bereits auf diese 7 Jahre alte Frage gegeben wurden?
Mogsdad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.