Dans C/C++
nous avons la fonction memset()
qui peut répondre à mon souhait mais dans Java
comment initialiser tous les éléments à une valeur spécifique? Chaque fois que nous écrivons int[] array=new int[10];
, ceci initialise simplement un tableau de taille 10 ayant tous les éléments égaux à zéro. Je veux juste changer cet entier d'initialisation pour un de mes tableau. c'est-à-dire que je veux initialiser un tableau qui a tous les éléments égaux à -1
. Sinon, je dois mettre une boucle for
juste après l'initialisation, qui va de l'index 0
à l'index size-1
et à l'intérieur de cette boucle, j'attribue l'élément à -1
. Ci-dessous le code pour plus de compréhension-
int[] array = new int[10];
for (int i = 0; i < size; i++) {
array[i] = -1;
}
Est-ce que je vais correct? Y a-t-il un autre moyen pour la même chose?
S'il s'agit d'un type primitif, vous pouvez utiliser Arrays.fill()
:
Arrays.fill(array, -1);
[Incidemment, memset
en C ou C++ n'a qu'une réelle utilité pour les tableaux de char
.]
Il y a aussi
int[] array = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
Il est également possible avec Java 8 flux:
int[] a = IntStream.generate(() -> value).limit(count).toArray();
Probablement pas la manière la plus efficace de faire le travail, cependant.
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 boucle for
:
int[] myArray = new int[10];
for (int i = 0; i < array.length; i++)
myArray[i] = -1;
Edit: J'aime aussi l'option Arrays.fill()
déjà mentionnée par d'autres personnes.
Avez-vous essayé le fonction Arrays.fill ?
De toute évidence, vous pouvez utiliser Arrays.fill (). Cependant, la façon dont vous l'avez fait fonctionne également.
En utilisant Java 8, vous pouvez simplement utiliser ncopies
de Collections
classe:
Object[] arrays = Collections.nCopies(size, object).stream().toArray();
Dans votre cas ce sera:
Integer[] arrays = Collections.nCopies(10, Integer.valueOf(1)).stream().toArray(Integer[]::new);
.
Ici est une réponse détaillée d'un cas similaire à vous.
Vous pouvez utiliser Arrays.fill(array, -1)
.