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 :

Serialization et ArrayList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    ghfhrghjyej
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : ghfhrghjyej

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut Serialization et ArrayList
    Bonjour,
    J'utilise la serialization pour pouvoir faire appel à ma classe sans que mes ArrayLists soient à chaque fois initialisées comme vides, mais je rencontre 2 problèmes:
    Le premier c'est que mon programme est devenu vraiment long (il doit à chaque fois serialiser ma liste puis la deserializer ) ce qui je pense (je suis débutant ) est la cause de sa lenteur .
    Le deuxième problème c'est que mes Arraylists qui sont serialiszées puis stockées dans un certain fichier vont toujours avoir la même valeur que celle qu'elles ont eu durant la dernière itération de programme, ce que je veux faire c'est vider le fichier en question à la fin du programme, est-ce possible ?
    Pour remédier à la lenteur de mon programme est-ce qu'il existe une alternative à la serialization ?
    Merci.

  2. #2
    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 : 46
    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
    La sérialisation permet de garder des objets dans un flux pour pouvoir les lires lors des exécutions suivante, ou pour pouvoir les transférer à une autre application. Si ton besoin est juste que ton arraylist soit initialisée, je vois pas pourquoi tu t'emmerde avec la sérialisation. Tu peux soit l'initialiser avec du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    myList = new ArrayList();
    myList.add(...);
    myList.add(...);
    myList.add(...);
    Soit passer par un array statique contenant le contenu "de base"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Object[] init = new Object[] {"1","2","3"};
    ...
    list = new ArrayList();
    for (int i=0; i < init.length; i++)
        list.add(init[i]);

  3. #3
    Membre actif
    Profil pro
    ghfhrghjyej
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : ghfhrghjyej

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut
    Merci Pour ta réponse, mais je crois qu'on ne sait pas vraiment compris tous les deux, je sais bien que la serialization est faite pour pouvoir garder mes objets et les lire lors des exécutions suivantes, mais moi je suis en train de l'utiliser dans une classe qui fait appel à elle même plusieurs fois durant une seule exécution cette même classe ajoute à chaque fois des valeurs à mon arraylist c'est pour ça que j'utilise la serialization pour que le contenu de mon mon arrayList ne se perde pas à chaque fois que ma classe refasse appel à elle même
    Mon problème c'est qu'après avoir utiliser mon programme une première fois et après avoir eu mes résultats je voudrais que le fichier où été stockés mes arrayList pour la serialization soit effacer pour que le résultat ne soit pas faussé la prochaine fois que j'utiliserai le programme
    Je ne sais pas si j'ai été assez claire mais j'ai expliqué du mieux que j'ai pu.
    Ps: Je n'ai pas très bien compris le deuxième source que tu m'as donné; c'est quoi un array statique ?
    Merci d'avance pour votre aide

  4. #4
    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 : 46
    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
    salut, t'as pas besoin de sérialisation tant que tes données restent au sein de la même exécution de l'application. Ce que tu essaie de faire, c'est d'avoir des données communes à toutes les instances d'un classe X qui t'appartiens. Met le champ en variable de classe (via le marqueur static) et non en variable d'objet et ton problème sera résolu. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public class X {
       private static ArrayList list = new ArrayList();
       public void addObject(Object a){
         list.add(a);
      }
      public ArrayList getList(){
        return list;
      }
    }
     
    // Ailleurs....
    X y = new X();
    y.add("1"); // la liste contient maintenant {"1"}
    X z = new X();
    z.add("2"); // la liste contient maintenant {"1","2"}

  5. #5
    Membre actif
    Profil pro
    ghfhrghjyej
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : ghfhrghjyej

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut
    Tout d'abord, merci pour ta réponse qui été déjà claire, mais je voudrais un peu plus de précision stp:
    Donc si j'ai bien comprit, si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public ma classe {
                             private maclasse mm
                            static  ArrayList jj = new ArrayList();
                                      jj.add('1');
                                     jj.add('2');
                                      mm=new maclasse();
     
    }
    A la fin de mon code j'aurrai jj=[1,2,1,2]
    Encore merci

  6. #6
    Membre très actif
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public MaClasse {
        private ArrayList jj;
        public MaClasse () {
            this.jj = new ArrayList();
            this.jj.add('1');
            this.jj.add('2');
            this.jj.add('1');
            this.jj.add('2');
        }
        /* Tout le code que tu veux sur ta classe*/
    }
    Là tu aura [1,2,1,2] dans "jj" à chaque fois que tu fait une nouvelle instance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public MaClasse {
        public static ArrayList jj;
        static {
            this.jj = new ArrayList();
            this.jj.add('1');
            this.jj.add('2');
            this.jj.add('1');
            this.jj.add('2');
        }
        /* Tout le code que tu veux sur ta classe*/
    }
    Ce dernier code est à utiliser si ta liste devait être statique.

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

Discussions similaires

  1. Serialization ArrayList Vide
    Par vinci.novice dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 27/04/2011, 00h49
  2. Serialization d'une classe avec arraylist
    Par jpsegret dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 01/04/2007, 09h46
  3. Serializer une ArrayList ou écrire dans un fichier texte?
    Par yvon_huynh dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/07/2006, 19h49
  4. Réponses: 1
    Dernier message: 04/05/2006, 11h33
  5. Problème de serialization
    Par bruno270579 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 30/04/2003, 18h11

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