Pourquoi je ne parviens pas à ajouter un élément à la liste après avoir assigné des valeurs à Arrays.asList ?
List<Integer> sam = Arrays.asList(1,2,3,4);
sam.add(5);
for (Integer integer : sam)
{
System.out.println(integer);
}
Pourquoi je ne parviens pas à ajouter un élément à la liste après avoir assigné des valeurs à Arrays.asList ?
List<Integer> sam = Arrays.asList(1,2,3,4);
sam.add(5);
for (Integer integer : sam)
{
System.out.println(integer);
}
Arrays.asList(1,2,3,4)
crée une "vue de liste" sur un tableau dont la taille ne peut pas changer. De cette façon, nous pouvons utiliser et accéder à un tableau par le biais de la fonction List
interface.
Si vous voulez une liste dans laquelle vous pouvez ajouter des valeurs tout en utilisant la fonction pratique Arrays.asList(..)
c'est tout simplement le cas :
List<Integer> sam = new ArrayList<>(Arrays.asList(1,2,3,4));
Arrays.asList
renvoie une liste de taille fixe. L'ajout ou la suppression d'éléments de cette liste n'est pas autorisé, il est cependant possible de modifier les éléments à l'intérieur de cette liste à l'aide de la fonction set
méthode.
public static <T> List<T> asList(T... a) {
return new ArrayList<T>(a); // this is not java.util.ArrayList
}
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable {
ArrayList(E[] array) {
if (array==null)
throw new NullPointerException();
a = array;
}
public E set(int index, E element) {
E oldValue = a[index];
a[index] = element;
return oldValue;
}
// add() and remove() methods are inherited from AbstractList
}
public abstract class AbstractList<E> extends AbstractCollection<E>
implements List<E> {
public E remove(int index) {
throw new UnsupportedOperationException();
}
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
}
Retourne une liste de taille fixe soutenue par le tableau spécifié. (Cette méthode sert de passerelle entre les API basées sur les tableaux et celles basées sur les collections, en combinaison avec Collection.toArray(). La liste retournée est sérialisable et implémente RandomAccess.
Donc, après l'avoir créé, vous ne pouvez pas y ajouter d'éléments.
Recherche dans la documentation de la méthode :
http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList(T...)
La méthode Arrays.asList renvoie une liste de taille fixe. Vous ne pouvez donc pas ajouter d'éléments à l'aide de la liste.
Quoi qu'il en soit, la même question trouve une réponse ici :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.