[Java] Convertit un tableau en ArrayList * Attention

Comment convertir un tableau en ArrayList et précautions / pièges

Je vais vous montrer comment convertir un tableau en ArrayList. Il y a des pièges dont vous tomberez certainement amoureux, alors poursuivez votre lecture jusqu'à la fin!

ListToArray.java


String[] array ={"A","B","C"};
List<String> list =  Arrays.asList(array);
System.out.println("Tableau= " + Arrays.toString(array));
System.out.println("List = " + list.toString());

résultat

Tableau= [A, B, C]
List = [A, B, C]

l'a fait! C'est facile.

... mais

Essayez d'ajouter un élément

ListToArray.java


//Omission
List<String> list =  Arrays.asList(array);
list.add("D"); //Ajouter D!

résultat

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at codeSample.ListToArray.main(ListToArray.java:13)

Obtenez une erreur

Pourquoi

Essayez de faire revenir la classe

ListToArray.java


//Omission
List<String> list =  Arrays.asList(array);
ArrayList<String> arrayList = new ArrayList<String>();
System.out.println("ArrayList régulier= " + arrayList.getClass());
System.out.println("Conversion à partir du tableau= " + list.getClass());

résultat

ArrayList régulier= class java.util.ArrayList
Conversion à partir du tableau= class java.util.Arrays$ArrayList

Hmm, quelque chose de différent!

Essayez de creuser profondément

java:java.util.Arrays.class


//Omission
public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }
    private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable
    {
        private static final long serialVersionUID = -2764017481108945198L;
        private final E[] a; //←←← est définitif!

        ArrayList(E[] array) {
            a = Objects.requireNonNull(array);    //Copie de référence (note supplémentaire)
        }

        @Override
        public int size() {
            return a.length;
        }
//Omission
    }

Il retournait une version simplifiée d'ArrayList définie dans la classe interne de la classe Arrays!

java:java.util.AbstractList.class


public boolean add(E e) {
    add(size(), e);
    return true;
}
//Omission
public void add(int index, E element) {
    throw new UnsupportedOperationException();
}

Réparer

ListToArray.java


//Omission
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(array));
arrayList.add("D");
System.out.println("Tableau= " + Arrays.toString(array));
System.out.println("List = " + arrayList.toString());

Nouvelle conversion de la zone de ArrayList. (Une addition)

résultat

Tableau= [A, B, C]
List = [A, B, C, D]

Arrays.asList () effectue simplement la conversion de type et la zone de mémoire référencée reste la même. (Une addition)

Recommended Posts

[Java] Convertit un tableau en ArrayList * Attention
[Java] Convertir ArrayList en tableau
Comment convertir la base Java
Comment initialiser un tableau Java
Comment convertir un fichier en tableau d'octets en Java
Convertir l'alphabet en 26 base + environ la longueur du tableau
[Java] tableau
Tableau Java
[Java] Je souhaite convertir un tableau d'octets en un nombre hexadécimal
java (tableau)
Tableau Java
[Java] Array
Contenu d'apprentissage de base Java 2 (array / ArrayList)
[Java] Convertir 1 en N liste en carte
Tableau Java
[Java] Différence entre array et ArrayList
[Java] Comment utiliser List [ArrayList]
Pour les débutants Java: List, Map, Iterator / Array ... Comment convertir?
Convertir un tableau bidimensionnel au format csv avec l'API Java 8 Stream
[Java] Conversion d'un tableau à une liste
[Java] Array
Comment créer un tableau Java
Convertir le tableau 2D de Swift en tableau 2D de C
Convertir toutes les applications Android (Java) en Kotlin
Convertir l'heure UTC Java en heure JST
[Java] Convertit null du type Object en type String
Convertir des fichiers SVG en fichiers PNG en Java
Convertir un tableau de chaînes en nombres
variable de tableau java
[Java] Note sur le tableau
[Java] Introduction à Java
Introduction à Java
[Java] De deux listes à une liste de tableaux
Convertissez une chaîne en un tableau caractère par caractère avec Swift
Comment convertir un contrat de solidité en une classe de contrat Java
Convertir les beans imbriqués Java au format aaa.bbb [0] .ccc
Tableau bidimensionnel en commençant tout juste à étudier Java
Lancez Docker à partir de Java pour convertir des documents Office en PDF
<java> Lire le fichier Zip et le convertir directement en chaîne
[Java] Convertir la version PDF
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 3
Convertir l'énumération Java et JSON vers et depuis Jackson
Exemple de code pour convertir List en List <String> dans Java Stream
Convertit le tableau d'erreurs.full_messages en caractères et sortie
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 2
[Java] Connectez-vous à MySQL
A propos de la liste des baies Java
Améliorations de Kotlin à Java
Pour les applications Java, convertissez des documents Word (DOC / DOCX) en PDF
De Java à Ruby !!
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 1
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Introduction à la commande java
[Java] Qu'est-ce que ArrayList?
Comment stocker des chaînes de ArrayList à String en Java (personnel)
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
Convertir un tableau potentiellement nul en flux