Dans C/C++
nous avons une memset()
fonction qui peut répondre à mon souhait mais Java
comment puis-je initialiser tous les éléments à une valeur spécifique? Chaque fois que nous écrivons int[] array=new int[10];
, cela initialise simplement un tableau de taille 10 ayant tous les éléments égaux à zéro. Je veux juste changer cet entier d'initialisation pour l'un de mes tableaux. c'est-à-dire que je veux initialiser un tableau qui a tous les éléments égaux à -1
. Sinon, je dois mettre une for
boucle juste après l'initialisation, qui va d'index 0
à index size-1
et à l'intérieur de cette boucle, j'attribue un élément -1
. Voici le code pour plus de compréhension-
int[] array = new int[10];
for (int i = 0; i < size; i++) {
array[i] = -1;
}
Suis-je correct? Y a-t-il un autre moyen pour la même chose?
Arrays.fill()
. Cela fait la même chose.public static void fill(int[] a, int val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
memset
peut également être utilisé, et est en fait très utile, dans des tableaux d'entiers lorsque vous devez remplir0
ou-1
, par exemple, dans des problèmes DP.Il y a aussi
la source
C'est également possible avec les flux Java 8:
Ce n'est probablement pas le moyen le plus efficace de faire le travail, cependant.
la source
Stream.generate(() -> new Whatever("Hello World", 42)).limit(count).toArray();
), donc est plus flexible que Arrays.fill (). Pas sûr de l'efficacité, cependant, comme vous le dites.Vous pouvez le faire si c'est court:
int[] array = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
mais cela devient mauvais pour plus que quelques-uns.
Plus facile serait une
for
boucle:Edit: J'aime aussi l'
Arrays.fill()
option que d'autres personnes ont mentionnée.la source
java.util.Arrays.fill ()
la source
Avez-vous essayé la fonction Arrays.fill ?
la source
Vous pouvez utiliser
Arrays.fill(array, -1)
.la source
Évidemment, vous pouvez utiliser Arrays.fill (), mais la façon dont vous l'avez fait fonctionne également.
la source
Arrays.fill()
Utilise même unefor
boucle avec index0
tosize-1
. De la même manière, ce que j'ai fait. Merci pour votre réponse.Utilisation de Java 8, vous pouvez simplement utiliser
ncopies
de laCollections
classe:Dans votre cas, ce sera:
Voici une réponse détaillée à un cas similaire du vôtre.
la source
Pour les listes que vous pouvez utiliser
Collections.fill(arrayList, "-")
la source