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 :

vecteur de classe


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Par défaut vecteur de classe
    salut tlm,
    j'ai déclaré une classe Station et une classe Liaison.
    dans la classe Liaison j'ai déclaré un vecteur de type Station:
    Station[] stat;
    stat[0]=new Station();
    la compilation ça marche nickel mais lors de l'éxecution une exeption se produit
    ma déclaration est fausse ou on ne peut pas déclaré un vecteur d'instanciations d'une clasee ?

  2. #2
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Citation Envoyé par mohamed amine
    salut tlm,
    j'ai déclaré une classe Station et une classe Liaison.
    dans la classe Liaison j'ai déclaré un vecteur de type Station:
    Station[] stat;
    stat[0]=new Station();
    la compilation ça marche nickel mais lors de l'éxecution une exeption se produit
    ma déclaration est fausse ou on ne peut pas déclaré un vecteur d'instanciations d'une clasee ?
    Déjà, ce n'est pas un vecteur que tu utilises, mais un tableau.
    Ensuite, tu déclares ton tableau mais tu ne l'instancie pas ! Comprends par là que tu ne le "crées" pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Station[] stat = new Station[3] ; // Ton tableau pourra contenir 3 Station au maximum
    stat[0]=new Station(); // ça marche
    stat[1]=new Station(); // re ça marche
    stat[2]=new Station(); // re re ça marche
    // stat[3]=new Station(); // ça plante, car ton tableau n'a que 3 cases !
    Si tu veux vraiment avoir un "vecteur" de Station (c'est à dire une liste de Station de taille variable), va voir du côté des Collections de Java, il y a sûrement ce que tu cherches : ArrayList me semble approprié dans ton cas.

    @+

  3. #3
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par mohamed amine
    salut tlm,
    j'ai déclaré une classe Station et une classe Liaison.
    dans la classe Liaison j'ai déclaré un vecteur de type Station:
    Station[] stat;
    stat[0]=new Station();
    la compilation ça marche nickel mais lors de l'éxecution une exeption se produit
    ma déclaration est fausse ou on ne peut pas déclaré un vecteur d'instanciations d'une clasee ?

    Heu c'est un tableau pas un vecteur.
    sinon il ta que tu initialises stat avec un new Station[4]; par exemple.
    ou 4 est la taille de ton tableau.

  4. #4
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    sinon tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Station> = new Vector<Station>();

  5. #5
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par thibaut
    sinon tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Station> = new Vector<Station>();
    ArrayList pas vector car plus rapide

  6. #6
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Ben vecteur pour moi c'est Vector (totally bilingue).

    Plus rapide, je crois que c'est plus tout à fais vrai pour les dernières versions du JDK.

  7. #7
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par thibaut
    Ben vecteur pour moi c'est Vector (totally bilingue).

    Plus rapide, je crois que c'est plus tout à fais vrai pour les dernières versions du JDK.
    Vector est plus lent car synchronisé. Rien à voir avec les versions de JDK qui feront juste que tu sentiras moins la différence.

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par thibaut
    Ben vecteur pour moi c'est Vector (totally bilingue).

    Plus rapide, je crois que c'est plus tout à fais vrai pour les dernières versions du JDK.
    Comme l'a dit natha, rien à voir avec les versions de la JVM...

    La synchronisation est coûteuse, et d'ailleurs il est plus rapide de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Vector v = new Vector();
    synchronized(v) {
        for(int i = 0; i < 10000; i++)
            v.add(new Object());
    }
    que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Vector v = new Vector();
    for(int i = 0; i < 10000; i++)
        v.add(new Object());

    Encore une raison d'utiliser ArrayList : même synchronisée, l'ArrayList est plus rapide (avec Collections.synchronizedList(new ArrayList())).

    Vector c'est juste pour la compatibilité ascendante... Tout comme Hashtable, Stack, Enumeration, StringTokenizer (pour une autre raison)...

Discussions similaires

  1. [Débutant] Vecteur de class contenant des pointeurs
    Par antoinelac dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/05/2010, 23h48
  2. Réponses: 20
    Dernier message: 25/03/2010, 16h45
  3. template, vecteur de classes perso.
    Par viking1404 dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2009, 17h27
  4. Problème accès à une méthode d'un vecteur de classe
    Par sebdu94 dans le forum SL & STL
    Réponses: 3
    Dernier message: 01/05/2008, 00h00
  5. [conception] vecteur de classes
    Par r0d dans le forum C++
    Réponses: 7
    Dernier message: 28/12/2005, 13h00

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