Utilisez un List<String>
comme un ArrayList<String>
. Il est dynamiquement extensible, contrairement aux tableaux (voir : Effective Java 2e édition, point 25 : préférer les listes aux tableaux. ).
import java.util.*;
//....
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
System.out.println(list); // prints "[1, 2, 3]"
Si vous insistez pour utiliser des tableaux, vous pouvez utiliser java.util.Arrays.copyOf
d'allouer un tableau plus grand pour accueillir l'élément supplémentaire. Mais ce n'est pas vraiment la meilleure solution.
static <T> T[] append(T[] arr, T element) {
final int N = arr.length;
arr = Arrays.copyOf(arr, N + 1);
arr[N] = element;
return arr;
}
String[] arr = { "1", "2", "3" };
System.out.println(Arrays.toString(arr)); // prints "[1, 2, 3]"
arr = append(arr, "4");
System.out.println(Arrays.toString(arr)); // prints "[1, 2, 3, 4]"
C'est O(N)
par append
. ArrayList
d'autre part, a O(1)
coût amorti par opération.
Voir aussi
7 votes
Bien que cette question ait +10 ans et qu'il soit important de comparer les différences entre les listes et les tableaux, il est étonnant de constater à quel point j'ai dû me creuser la tête pour trouver comment obtenir un tableau résultant avec un nouvel élément ajouté, comme le demandait initialement le PO.