Comment ajouter de nouveaux éléments à un tableau en Java

Hassan Saeed 12 octobre 2023
  1. Utilisez un ArrayList
  2. Créer un nouveau tableau plus grand
Comment ajouter de nouveaux éléments à un tableau en Java

Ce tutoriel explique comment ajouter de nouveaux éléments à un tableau en Java.

Array en Java est un objet conteneur qui contient un nombre fixe d’éléments du même type de données. La longueur du tableau est définie lors de la déclaration de l’objet tableau, et ne peut être modifiée par la suite.

Supposons que nous ayons un tableau de longueur 5 en Java instancié avec quelques valeurs:

String[] arr = new String[5];
arr[0] = "1";
arr[1] = "2";
arr[2] = "3";
arr[3] = "4";
arr[4] = "5";

Il est maintenant nécessaire d’ajouter un 6ème élément à notre tableau. Essayons d’ajouter ce 6ème élément à notre tableau.

arr[5] = "6";

La ligne de code ci-dessus donne l’erreur suivante:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5

C’est parce que nous avons déclaré que le tableau était de taille 5 au départ et que nous avons essayé d’y ajouter un 6ème élément.

Ne vous inquiétez pas, il y a deux solutions possibles pour y parvenir. Nous pouvons utiliser un ArrayList au lieu d’un tableau ou créer un nouveau tableau plus grand pour accueillir de nouveaux éléments.

Utilisez un ArrayList

Une solution meilleure et recommandée est d’utiliser un ArrayList au lieu d’un tableau car il est redimensionnable. Il n’y a pas de taille fixe de ArrayList donc chaque fois qu’il y a besoin d’ajouter un nouvel élément, vous pouvez simplement l’ajouter en exécutant testList.add(element).

import java.util.*;

public class Main {
  public static void main(String args[]) {
    List<String> testList = new ArrayList<String>();
    testList.add("1");
    testList.add("2");
    testList.add("3");
    testList.add("4");
    testList.add("5");

    // Print the original list
    System.out.println("Initial ArrayList:\n" + testList);
    // Add elements without running into any error
    testList.add("6");
    testList.add("7");

    // Print the list after adding elements
    System.out.println("Modified ArrayList:\n" + testList);
  }
}

Le code ci-dessus donne les résultats suivants.

Initial ArrayList : [ 1, 2, 3, 4, 5 ] Modified ArrayList : [ 1, 2, 3, 4, 5, 6, 7 ]

Ou si nous avons déjà un tableau, nous pouvons aussi créer un ArrayList directement.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[1];
    arr[0] = "1";
    // Convert to ArrayList
    List<String> testList = new ArrayList<>(Arrays.asList(arr));

    // Print the original list
    System.out.println("Initial ArrayList:\n" + testList);
    // Add elements to it
    testList.add("2");
    testList.add("3");

    // Print the list after adding elements
    System.out.println("Modified ArrayList:\n" + testList);
  }
}

Le code ci-dessus donne les résultats suivants.

Initial ArrayList : [ 1 ] Modified ArrayList : [ 1, 2, 3 ]

Nous pouvons facilement reconvertir un ArrayList en un tableau.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[1];
    arr[0] = "1";

    // Convert to ArrayList
    List<String> testList = new ArrayList<>(Arrays.asList(arr));

    // Add elements to it
    testList.add("2");
    testList.add("3");

    // Convert the arraylist back to an array
    arr = new String[testList.size()];
    testList.toArray(arr);
  }
}

Créer un nouveau tableau plus grand

Si nous insistons pour ne travailler qu’avec des tableaux, nous pouvons utiliser la méthode java.util.Arrays.copyOf pour créer un tableau plus grand et y intégrer un nouvel élément. Utilisons le tableau arr que nous avons créé ci-dessus et ajoutons-y un nouvel élément dans l’exemple ci-dessous.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[5];
    arr[0] = "1";
    arr[1] = "2";
    arr[2] = "3";
    arr[3] = "4";
    arr[4] = "5";

    // print the original array
    System.out.println("Initial Array:\n" + Arrays.toString(arr));

    // Steps to add a new element
    // Get the current length of the array
    int N = arr.length;
    // Create a new array of length N+1 and copy all the previous elements to this new array
    arr = Arrays.copyOf(arr, N + 1);
    // Add a new element to the array
    arr[N] = "6";
    // print the updated array
    System.out.println("Modified Array:\n" + Arrays.toString(arr));
  }
}

Le code ci-dessus donne les résultats suivants.

Initial Array : [ 1, 2, 3, 4, 5 ] Modified Array : [ 1, 2, 3, 4, 5, 6 ]

Si plus tard nous ressentons le besoin d’ajouter un autre élément à arr, nous devrons répéter le bloc de code ci-dessus à nouveau !

Cette solution n’est donc pas recommandée car l’ajout de chaque nouvel élément a une complexité temporelle de O(n) puisqu’il doit copier tous les éléments du tableau précédent dans un nouveau tableau. D’autre part, l’ajout de chaque nouvel élément en utilisant ArrayList a un coût amorti par opération de O(1).

Article connexe - Java Array