web-dev-qa-db-fra.com

Comment initialiser tous les éléments d'un tableau à une valeur spécifique dans java

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?

99
Ravi Joshi

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.]

196

Il y a aussi

int[] array = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
30
Gilbert Le Blanc

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.

3
Alexey

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.

2
Danation
1

Avez-vous essayé le fonction Arrays.fill ?

1
Sam Goldberg

De toute évidence, vous pouvez utiliser Arrays.fill (). Cependant, la façon dont vous l'avez fait fonctionne également.

0
Renuz

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.

0
hd84335

Vous pouvez utiliser Arrays.fill(array, -1).

0
user973999