135 votes

Comment initialiser tous les éléments d'un tableau à une valeur spécifique en Java ?

En C et C++, nous disposons de la fonction memset() qui peut répondre à mon souhait. Mais en 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 dont tous les éléments sont fixés à 0, mais je veux juste initialiser tous les éléments à quelque chose d'autre que 0 (disons, -1 ).

Sinon, je dois mettre un for juste après l'initialisation, qui va de l'index 0 à l'index taille 1 et, à l'intérieur de cette boucle, assigner à chaque élément la valeur souhaitée, comme ceci :

int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
    array[i] = -1;
}

Ai-je bien compris ? Existe-t-il une autre façon de procéder ?

258voto

Oli Charlesworth Points 148744

S'il s'agit d'un type primitif, vous pouvez utiliser Arrays.fill() :

Arrays.fill(array, -1);

[ Par ailleurs, memset en C ou C++ n'est vraiment utile que pour les tableaux de char . ]

32voto

Gilbert Le Blanc Points 25590

Il y a aussi

int[] array = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};

8voto

Alexey Points 2956

C'est également possible avec les flux Java 8 :

int[] a = IntStream.generate(() -> value).limit(count).toArray();

Ce n'est probablement pas la façon la plus efficace de faire le travail.

3voto

Danation Points 656

Vous pouvez le faire si c'est court :

int[] array = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};

mais la situation n'est pas facile pour tout le monde.

Il serait plus facile d'utiliser un for boucle :

  int[] myArray = new int[10];
  for (int i = 0; i < array.length; i++)
       myArray[i] = -1;

Edit : J'aime aussi les Arrays.fill() option mentionnée par d'autres personnes.

2voto

Pangea Points 36713

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X