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

Langage Java Discussion :

[Debutant] problème avec les vectors


Sujet :

Langage Java

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut [Debutant] problème avec les vectors
    salut,
    J'ai une classe qui stocke des objets dans un vecteur.
    Mais j'ai un problème à l'exécution.

    Voici le code simplifié, ça plante sur le addElement. N'est ce pas la bonne méthode pour ajouter un objet?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public abstract class AgendaTel {
     
    	private Vector<AdresseTel> carnet;
     
    	public void newContact(String n, String p, String ph){
    		AdresseTel a = new AdresseTel(n,p,ph);
    		System.out.println(a.getName() + " " + a.getFirstName() + " " + a.getPhone());
    		carnet.addElement(a);
    	}
    }

  2. #2
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Je te conseille de remplacer Vector par ArrayList et d'utiliser la méthode add de cette derniere.

    L'avantage d'ArrayList est qu'elle est plus récente et non synchronisée.

    F.

  3. #3
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par mavina Voir le message
    Salut,

    L'avantage d'ArrayList est qu'elle est plus récente et non synchronisée.
    +1
    et plus rapide par conséquent.

  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    merci pour vos conseils, j'ai modifié le code et noté pour la prochaine fois.
    Mais j'ai toujours le même problème.
    En fait j'ai une java.lang.NullPointerException
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public abstract class AgendaTel {
     
    	private ArrayList<AdresseTel> carnet;
     
    	public void newContact(String n, String p, String ph){
    		AdresseTel a = new AdresseTel(n,p,ph);
    		System.out.println(a.getName() + " " + a.getFirstName() + " " + a.getPhone());
    		carnet.add(a);
    	}
    }

  5. #5
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Salut

    est-ce que la collection carnet à été initialisé ?

    vérifie les paramètres si n, p ou ph == null.

  6. #6
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    En effet, il faut initialiser ton ArrayList.

    Par souci de performances et si tu sais que tu vas mettre beaucoup d'éléments dedans, initialise le via le constructeur prenant une taille de base et mets là assez grande : http://javasearch.developpez.com/j2s...ArrayList(int)... En effet, le resize interne de la liste est relativement couteux, donc si il est fait régulièrement, il peut entacher les performance de ton application.

    Sinon, le constructeur par défaut l'initialise à 10.

    et plus rapide par conséquent.
    Ceci est de moins en moins vrai, plus on avance dans les versions de Java et moins la synchronisation est couteuse. Le fait est que Vector soit synchronisé n'est pas la seule raison de ne pas l'utiliser : elle est vieille (elle date de la version 1.1 de Java, et donc n'est pas apparue avec l'API des collections. Elle est venue "se greffer" à cet API. Il est préférable si tu veux une liste synchronisée d'appeller Collections.synchronizedList(List), ce qui te permet d'avoir la même liste en synchronisée, et donc d'éviter d'utiliser Vector.
    Vector est encore dans l'API par souci de rétro-compatibilité : beaucoup (énormémént même) de programmes utilisent cette classe au lieu d'utiliser ArrayList, j'ai moi même vu dans des programmes 1.4 des programmeurs utiliser Vector sans contexte multi-Threadés.

    F.

  7. #7
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Merci pour vos conseils,
    En fait, en voulant initialiser ArrayList, je me suis rendu compte que j'avais un peu oublier de créer l'instance....
    Je déclarais la variable seulement....

    Donc ça marche maintenant. Merci pour toutes ces infos.

    @+

    Julien

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

Discussions similaires

  1. Problème avec les vector
    Par terminator59140 dans le forum C++
    Réponses: 8
    Dernier message: 03/06/2009, 23h21
  2. problème avec les vector
    Par cdm1024 dans le forum SL & STL
    Réponses: 8
    Dernier message: 15/04/2008, 10h57
  3. [Debutant], probléme avec les structures
    Par BobLunique dans le forum C
    Réponses: 5
    Dernier message: 27/03/2008, 19h19
  4. Problème avec les vector
    Par lostchina dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/03/2007, 10h51

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