IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Copier un ArrayList dans un autre ArrayList ?


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut Copier un ArrayList dans un autre ArrayList ?
    bonjour

    j'essaye de copier un arrayliste dans un autre arrlyliste sauf j'aimerai quand je modifier l'un d'entre eux l'autre ne soit pas modifier ?
    quelqu'un a une solution.
    j'ai essayé avec les collections pour faire des copies manuel mais ca pas marcher.

    merci,

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 60
    Par défaut
    Supposant que strings est un ArrayList de String.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ArrayList<String> strings2=new ArrayList<String>();
     
    for(String s:strings)
    strings2.add(s);
    Je suppose que ça devrait faire l'affaire, sinon postez votre code pour avoir une idée plus claire.

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par lotfi-g Voir le message
    bonjour

    j'essaye de copier un arrayliste dans un autre arrlyliste sauf j'aimerai quand je modifier l'un d'entre eux l'autre ne soit pas modifier ?
    Je suppose que tu parle des éléments mutables dans la liste?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ArrayList<Type> liste1 = .....;
    ArrayList<Type> liste2 =new ArrayList<Type>(liste1.size());
    for (Type t : liste1)
       liste2.add(t.clone());

    ceci nécessite que tous les éléments de la liste implémentent correctement cloneable.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut arraylist
    Bonjour à tous

    j'ai déjà essayé la méthode clone()
    voici le code de déclaration des arrayliste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    static ArrayList<ArrayList<ArrayList<Object>>> evenliste= new ArrayList<ArrayList<ArrayList<Object>>>();
       static ArrayList<ArrayList<ArrayList<Object>>> evenlisteA= new ArrayList<ArrayList<ArrayList<Object>>>();
       static ArrayList<ArrayList<ArrayList<Object>>> evenlisteP= new ArrayList<ArrayList<ArrayList<Object>>>();
    ici j'ai cloné evenlistP et evenlisteA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(Object ob:evenliste)
         {
        	 evenlisteP.add((ArrayList<ArrayList<Object>>) ((ArrayList<ArrayList<Object>>)ob).clone());
        	 evenlisteA.add((ArrayList<ArrayList<Object>>) ((ArrayList<ArrayList<Object>>)ob).clone());
         }
    ici j'ai modifié le evenlisteP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((ArrayList<String>) ((ArrayList<ArrayList<Object>>) evenlisteP.get(n).get(m).get(o)).get(p).get(q)).set(9,var);
    mais c'est toujours le même problème lorsque je modifie evenlisteP automatiquement evenlist va être modifier

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il faudrait cloner tous les éléments à chaque niveau...


    Mais... C'est quoi cette structure de données à trois niveaux

    Ce doit être affreux à gérer. Tu stockes quoi là dedans ? Pourquoi tu as besoin d'autant de listes imbriquées ?


    a++

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    Salut;

    c'est une structure d'agrégation des événement dans le réseaux inter-véhiculaire il y a les types d'événement, les coordonnés de chaque zone physique et....

    j'ai pas bien compris votre proposition à ce problème.

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lotfi-g Voir le message
    c'est une structure d'agrégation des événement dans le réseaux inter-véhiculaire il y a les types d'événement, les coordonnés de chaque zone physique et....
    Et il n'y a pas moyen d'utiliser une structure un peu plus clair ? Un objet par exemple...

    Citation Envoyé par lotfi-g Voir le message
    j'ai pas bien compris votre proposition à ce problème.
    Si tu veux conserver cette "structure", il faut cloner tous les ArrayList et pas seulement celle au premier niveau.


    Mais bon je pense qu'il serait plus utile pour toi de revoir ta structure de données...

    a++

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    En faite j'arrive pas a comprendre pourquoi lorsque je fait des modifications sur evenlisteP, automatiquement evenlist va subir la même modification comme si je la modifie elle même.

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    parce que les données ne sont pas profondément clonée, les références restent donc partagées, donc les changement dans l'un se refletent dans l'autre.

    Et je suis d'accord avec adiguba: cette structure de donnée est à revoir, elle est imbuvable, vous allez commettre des erreurs à tous les niveaux avec ça (celle que vous postez n'est que la première d'une longue liste)! Sans parler de la lisibilité des déclarations de variable!

  10. #10
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    Salut,

    Le problème c'est que je peut pas redéfinir une autre structure car les membres de ce projet ont déjà défini cette structure et ma tâche consiste a récupéré un type d'événement et appliqué un traitement spécifique que je doit l'enregistrer dans un arraylist que je l'ai nommé evenlisP qui a la même structure que l'arrayliste principale nommé evenliste

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    Salut,

    j'ai eu une idée mais je ne sais pas est ce que ca va résoudre ce problème ou non?

    En faite, au lieu de faire un clonage de liste principale je vais créer une autre liste qui a la même structure que la liste principale et comme ca je peut modifier la liste que j'ai crée sans que la liste principale soit modifié.
    vous pensez quoi?

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    créer une nouvelle liste qui a les mêmes caractéristiques, c'est le principe du clonage.

    Pour ce qui est de la structure, on ne fais pas toujours ce qu'on veux, mais avec une structure pareille je n'ai qu'un conseil à donner:

    FUIS! Vite et loin de cette boite!

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 60
    Par défaut
    lol je crois que la solution d'un objet pourrait simplifié les choses,
    sinon quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static ArrayList<ArrayList<ArrayList<Object>>> evenliste= new ArrayList<ArrayList<ArrayList<Object>>>();
    evenliste c'est une référence vers un tableau de tableau de références d'object,
    ça par exemple evenliste.get(0).get(0) c'est une référence vers un ArrayList.
    si tu fai referenceA = referenceB tu crée pas de nouvel objet, tu ne fais que lui attribué une nouvelle référence.

Discussions similaires

  1. stocker 2 arraylist dans une autre arraylist
    Par zdarbilo dans le forum Android
    Réponses: 2
    Dernier message: 23/05/2014, 14h36
  2. Copie d'une ArrayList dans une autre
    Par swissmade dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 09/04/2009, 20h18
  3. arraylist dans une autre arraylist
    Par ceres02 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/03/2006, 08h35
  4. copier une ligne dans une autre table
    Par BoeufBrocoli dans le forum SQL
    Réponses: 5
    Dernier message: 24/10/2003, 22h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo