In haben C/C++
wir eine memset()
Funktion, die meinen Wunsch erfüllen kann, aber Java
wie kann ich alle Elemente auf einen bestimmten Wert initialisieren? Wenn wir schreiben int[] array=new int[10];
, initialisieren wir einfach ein Array der Größe 10, bei dem alle Elemente gleich Null sind. Ich möchte nur diese Initialisierungs-Ganzzahl für eines meiner Arrays ändern. dh ich möchte ein Array initialisieren, bei dem alle Elemente gleich sind -1
. Andernfalls muss ich for
unmittelbar nach der Initialisierung eine Schleife einfügen, die von Index 0
zu Index reicht , size-1
und innerhalb dieser Schleife weise ich ein Element zu -1
. Unten finden Sie den Code für mehr Verständnis.
int[] array = new int[10];
for (int i = 0; i < size; i++) {
array[i] = -1;
}
Gehe ich richtig Gibt es einen anderen Weg dafür?
Arrays.fill()
. Es macht das Gleiche.public static void fill(int[] a, int val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
memset
kann auch in ganzzahligen Arrays verwendet werden und ist in der Tat sehr nützlich, wenn Sie mit0
oder-1
beispielsweise bei DP-Problemen füllen müssen .Es gibt auch
quelle
Es ist auch mit Java 8-Streams möglich:
Wahrscheinlich nicht die effizienteste Art, die Arbeit zu erledigen.
quelle
Stream.generate(() -> new Whatever("Hello World", 42)).limit(count).toArray();
) funktionieren und ist daher flexibler als Arrays.fill (). Ich bin mir jedoch nicht sicher über die Effizienz, wie Sie sagen.Sie könnten dies tun, wenn es kurz ist:
int[] array = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
aber das wird schlecht für mehr als nur ein paar.
Einfacher wäre eine
for
Schleife:Bearbeiten: Ich mag auch die
Arrays.fill()
Option, die andere Leute erwähnt haben.quelle
java.util.Arrays.fill ()
quelle
Haben Sie die Funktion Arrays.fill ausprobiert ?
quelle
Sie können verwenden
Arrays.fill(array, -1)
.quelle
Offensichtlich können Sie Arrays.fill () verwenden. Die Art und Weise, wie Sie es gemacht haben, funktioniert jedoch auch.
quelle
Arrays.fill()
verwendet einefor
Schleife mit dem Index0
zusize-1
. Genauso wie ich. Vielen Dank für Ihre Antwort.Mit Java 8, können Sie einfach
ncopies
vonCollections
Klasse:In Ihrem Fall wird es sein:
Hier ist eine detaillierte Antwort auf einen ähnlichen Fall von Ihnen.
quelle
Für Listen können Sie verwenden
Collections.fill(arrayList, "-")
quelle