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