Initialisation des tableaux en Java

1. Vue d'ensemble

Dans ce rapide tutoriel, nous allons voir les différentes façons dont nous pouvons initialiser un tableau et les différences subtiles entre celles-ci.

2. Un élément à la fois

Commençons par une méthode simple basée sur des boucles:

for (int i = 0; i < array.length; i++) { array[i] = i + 2; }

Et voyons aussi comment nous pouvons initialiser un tableau multidimensionnel un élément à la fois:

for (int i = 0; i < 2; i++) { for (int j = 0; j < 5; j++) { array[i][j] = j + 1; } }

3. Au moment de la déclaration

Initialisons maintenant un tableau au moment de la déclaration:

String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

Lors de l'instanciation du tableau, nous n'avons pas à spécifier son type:

int array[] = { 1, 2, 3, 4, 5 };

Notez qu'il n'est pas possible d'initialiser un tableau après la déclaration en utilisant cette approche. Une tentative de le faire entraînera une erreur de compilation.

4. Utilisation de Arrays.fill ()

La classe java.util.Arrays a plusieurs méthodes nommées fill () qui acceptent différents types d'arguments et remplissent tout le tableau avec la même valeur:

long array[] = new long[5]; Arrays.fill(array, 30);

La méthode a également plusieurs alternatives qui définissent une plage d'un tableau sur une valeur particulière:

int array[] = new int[5]; Arrays.fill(array, 0, 3, -50);

Notez que la méthode accepte le tableau, l'index du premier élément, le nombre d'éléments et la valeur.

5. Utilisation de Arrays.copyOf ()

La méthode Arrays.copyOf () crée un nouveau tableau en copiant un autre tableau. La méthode a de nombreuses surcharges qui acceptent différents types d'arguments.

Voyons un exemple rapide:

int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 5);

Quelques notes ici:

  • La méthode accepte le tableau source et la longueur de la copie à créer
  • Si la longueur est supérieure à la longueur du tableau à copier, les éléments supplémentaires seront initialisés en utilisant leurs valeurs par défaut
  • Si le tableau source n'a pas été initialisé, une NullPointerException est levée
  • Si la longueur du tableau source est négative, une exception NegativeArraySizeException est levée

6. Utilisation de Arrays.setAll ()

La méthode Arrays.setAll () définit tous les éléments d'un tableau à l'aide d'une fonction de générateur:

int[] array = new int[20]; Arrays.setAll(array, p -> p > 9 ? 0 : p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Si la fonction de générateur est nulle, une NullPointerException est levée.

7. Utilisation de ArrayUtils.clone ()

Enfin, utilisons l' API ArrayUtils.clone () de Apache Commons Lang 3 - qui initialise un tableau en créant une copie directe d'un autre tableau:

char[] array = new char[] {'a', 'b', 'c'}; char[] copy = ArrayUtils.clone(array);

Notez que cette méthode est surchargée pour tous les types primitifs.

8. Conclusion

Dans cet article, nous avons exploré différentes manières d'initialiser des tableaux en Java.

Comme toujours, la version complète du code est disponible à l'adresse over sur GitHub.