La classe List et la structure de données primitive array en Java sont toutes deux des mécanismes permettant de stocker et d'accéder à une collection d'objets. La classe ArrayList est une implémentation redimensionnable de l'interface List où, en interne, l'ArrayList a un tableau d'objets.
Les APIs Java ont souvent des méthodes qui nécessitent soit un tableau d'objets soit une List, il existe donc des mécanismes en Java pour convertir un tableau primitif en une List et vice versa.
Converting primitive Array to a List
Utilisez Arrays.asList()
pour convertir un tableau en une List.
Integer[] array = new Integer[] { 95, 87, 83 };
List list = Arrays.asList(array);
System.out.println(list); // [95, 87, 83]
Converting List to a primitive Array
Si vous souhaitez convertir une List en un tableau, utilisez la méthode toArray().
Integer[] array2 = list.toArray(new Integer[array.size()]);
De même, si vous souhaitez convertir des valeurs int primitives en List, vous pouvez simplement itérer sur les valeurs et les ajouter.
int[] array3 = new int[] { 95, 87, 83 };
List list3 = new ArrayList(array3.length);
for(int val : array3) {
list3.add(val);
}
System.out.println(list3); // [95, 87, 83]
Similitudes et différences entre List et tableau primitif
Les List et les tableaux primitifs ont tous les deux le premier élément avec un index de 0 et le nième élément a un index de n - 1. Accéder à un élément avec un index inférieur à 0 ou supérieur à n-1 entraîne une exception : IndexOutOfBoundsException dans la liste ou ArrayIndexOutOfBoundsException dans le cas du tableau.
Obtenir et définir des éléments dans un tableau primitif
int grade = array[0];
array[0] = 98;
int len = array.length; // nombre d'éléments dans le tableau
grade = array[-1]; // lance ArrayIndexOutOfBoundsException
Obtenir et définir des éléments dans une List
int grade = list.get(0);
list.set(0, 98);
int len = list.size(); // nombre d'éléments dans la liste
grade = list.get(-1); // lance IndexOutOfBoundsException
Sauf si la liste est immuable (ou en lecture seule), vous pouvez ajouter ou supprimer des éléments. Voir Collections.unmodifiableList(). Pour agrandir/rétrécir un tableau primitif, vous devez créer un nouveau tableau et copier les anciens éléments du vieux vers le nouveau tableau.
En général, les tableaux primitifs et les List sont sémantiquement équivalents mais avec une syntaxe différente. Une forme peut être convertie en l'autre.