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 :

ArrayListe, pb de visibilite?


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut ArrayListe, pb de visibilite?
    bonjour a tous.
    Voila j explique mon probleme.Je travail avec des listes, principalement des ArrayList de String. La plupart sont declarees en static au dessus du main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    static ArrayList<String> list_layer_itf_ref = new ArrayList<String>();
    	static ArrayList<String> list_layer_itf = new ArrayList<String>();
    	static ArrayList<String> list_layer_itf_ref2 = new ArrayList<String>();
    	static ArrayList<String> list_layer_itf2 = new ArrayList<String>();
    	static ArrayList<String> list_layer_itf_after_treatment = new ArrayList<String>();
    	static ArrayList<String> list_layer_itf2_after_treatment = new ArrayList<String>();
    Par la suite, j ai besoin de faire une copie d une liste et de modifier cettes copie sans modifier la liste de base>Je fais donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayList<String> layerItfTemp = list_layer_itf2;
    Cependant lorsaue je travail sur "layerItfTemp", apres le traitement, "list_layer_itf2" est aussi modifie et je ne comprend pas pourquoi.

    Quelqu un a t il une petite idee ?

  2. #2
    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,


    L'opérateur " = " permet uniquement de faire une copie de la référence de l'objet, et non pas une copie de l'objet en lui même.

    Si tu veux copier l'objet il faut le faire explicitement, via un clone ou la création d'une nouvelle ArrayList...


    a++

    PS : Et attention à l'utilisateur de liste en static : dans un contexte multithreadé cela peut poser des problèmes...

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut
    Ok merci je ne savais pas du tout :/

    J ai encore une autre question comment fonctionne la class clone ?
    Je n arrive a "cloner" ma dite list

  4. #4
    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
    clone() est une méthode...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	// clone : 
    	ArrayList<String> layerItfTemp = (ArrayList) list_layer_itf2.clone();
     
    	// ou	
     
    	// création d'une copie :
    	ArrayList<String> layerItfTemp = new ArrayList<String>(list_layer_itf2);
    a++

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut
    Super merci beaucoup

    J ai appris deux choses du coup
    Je passe en resolu

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    avec les listes en java, préfère la création d'une liste via le constructeur qui s'occupe déjà de la méthode clone, si tu veux une copie exacte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static ArrayList oldList;
     
    ArrayList newList = new ArrayList(oldList);
    Si tu veux une copie en modifiant certaines choses, surchage la méthode clone et clone ta liste pour en recréer une nouvell.

    Sinon il y a la méthode addAll qui te permet de copier tous les éléments d'une liste dans une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    newList.addAll(oldList);
    Attention,si ta liste est typée, respecte le même type tout comme dans l'exemple de Adiguba (création par copie)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [info]ArrayList
    Par schousso dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 06/05/2004, 11h44
  2. visibilite de mon serveur sur internet
    Par jabaka dans le forum Apache
    Réponses: 9
    Dernier message: 03/05/2004, 14h22
  3. [Fichier] Ajout des lignes de doc dans arraylist
    Par 3adoula dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 29/04/2004, 22h41
  4. [ STRUTS ][ JSP ][ ArrayList] un lien pour trier
    Par LoulouFifi dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/02/2004, 17h24
  5. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33

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