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 :

[Debutant][Conception] Création dynamique d'instance


Sujet :

Collection et Stream Java

  1. #1
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut [Debutant][Conception] Création dynamique d'instance
    Aprés une recherche infructeuse sur le forum , avec ce titre comme mots clés.
    Je me demander si il etait possible de crée dynamiquement des instance de classes.
    Ceci n'est encore qu'un projet je n'est donc pas de code , mais l'idée serai de crée , une classe compte , qui represente un compte , qui serai rempli suite a une lecture de texte :
    1) je lis une ligne
    2) je la decoupe et la traite
    3) je crée mon instance de compte
    Et cela ainsi de suite jusqua la fin du fichier.
    En gros une espece de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    nbr = 10 // nombre de ligne du fichier
    for(int i=0;i<nbr;i++){
    Compte C+i = New Compte(parametre);
    }
    Je sais que je pourrai crée un tableau de compte , mais le nombre de compte est indéfini, et depend de la lecture du txt ( fichier de sauvegarde d'un jeu )

    Donc est'il possible crée dynamiquement mes isntances , ou dois-je passer par un tableau obligatoirement ?
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  2. #2
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Tu ne peux pas crée un nom d'instance de façon dynamique comme "c+i", tu vas devoir utiliser un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int nbr = 10;
    Compte[] liste = new Compte[10];
    for (int i=0;i<nbr;i++) { 
      liste[i] = New Compte(parametre);
    }

  3. #3
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Laisse tomber le tableau de compte, vu que tu ne connais pas le nombre d'élément.

    Je te conseille d'utiliser plutot un Vecteur de Compte (classe java.util.Vector)
    Le nombre d'élément d'un Vector est indéfini (enfin défini par la mémoire de ton serveur quand même )

    Ensuite pourquoi pas, créer un tableau de Compte avec un nombre d'élément défini. (ne pas oublier d'envoyer le vecteur au garbage après)

    Pour ma part, je ferai ca.
    Grave urgent !!!

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Utilises des List :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    nbr = 10 // nombre de ligne du fichier
    List listComptes = new ArrayList();
     
    for(int i=0;i<nbr;i++){
         Compte c = new Compte(parametre);
     
         listcomptes.add (c);
    }
    a++

  5. #5
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Ok recu , je vais voir entre Vector et Arraylist , lequel est le plus simple a gerer , car j'en ai fait ^^.
    Merci a tous.
    ++
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 88
    Points
    88
    Par défaut moi je ferai plutot un tableau indexe
    bonjour,

    dans ton cas j'utiliserai une HastTable indexée par le nom que tu voulais donner à tes variables (C+i).

    maintenant les autres reply proposant un Vector sont une bonne idée aussi.

    Je t'xplique vite fais la raison principale qui fait que tu ne peux pas faire ce que tu veux.

    En fait, tu va créé des variables dont le nom n'est pas connu à la compilation. En toute logique à l'execution ca devrait etre gérable, mais pas a la compilation. En effet, tu va utiliser des variables dans ton code qui sont non déclarées puisque leur nom n'est pas encore définit. Donc le compilo ne les connait pas. De plus, il ne peut verifier le type des variables par la même occasion.

    waddle

    --
    EPITA Student
    Promo 2006
    Waddle

  7. #7
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut Re: moi je ferai plutot un tableau indexe
    Citation Envoyé par waddle
    bonjour,

    dans ton cas j'utiliserai une HastTable indexée par le nom que tu voulais donner à tes variables (C+i).
    Une Hastable poour ce genre de problème ??? et pourquoi pas utiliser une enclume pour écraser un moucheron...

    Non la Hashtable n'est pas adaptée : car la gestion d'une HashTable est très lourde et pas bien adaptée pour ce problème...

    Désolé pour a réponse j'avais pas vu que le 10 était à titre d'exemple, j'avais pas lu tout le problème, donc dans ce cas utilises un ArrayList (non un Vector - car Vector est plus lent)...

  8. #8
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    D'accord je vais consulter la FAQ et les posts traitant des Arraylist , merci.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 88
    Points
    88
    Par défaut ah bon ???
    une hashtable pas adaptée ??? ca depend comment il veut manipuler ses variables.

    Mais sans vouloir chipoter...une ArrayList n'a pas d'acces par indice, or vector oui. Et comme il me semble qu'il voulait les utilisé Vector me semble plus indiqué qu'une ArrayList (et c'est vrai plus qu'une HashTable après réflexion).

    Quand à la lenteur....bon....c'est pas comme si ca prenait trois plombes de plus de parcourir un Vector quand même.

    waddle

    --
    EPITA Student
    Promo 2006
    Waddle

  10. #10
    Membre du Club

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 49
    Points
    49
    Par défaut
    Pour info, une ArrayList est un vector non synchronisé.
    Il est recommandé d'ailleurs d'utiliser des ArrayList à la place d'un Vector lorsque la synchronisation n'est pas nécessaire, car plus rapide et surtout conforme aux 'nouvelles' classes de type collection.
    De même il faut plutôt utiliser HashSet (ou HashMap) à la place de Hashtable.

    Maintenant chacun fait ce qui lui plait...

  11. #11
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Citation Envoyé par ptitom
    Pour info, une ArrayList est un vector non synchronisé.
    Il est recommandé d'ailleurs d'utiliser des ArrayList à la place d'un Vector lorsque la synchronisation n'est pas nécessaire, car plus rapide et surtout conforme aux 'nouvelles' classes de type collection.
    De même il faut plutôt utiliser HashSet (ou HashMap) à la place de Hashtable.

    Maintenant chacun fait ce qui lui plait...
    En fait Vector a aussi ete modifie pour respecter les 'nouvelles' classes de type collection donc pas de prob avec ca ..

    Pour la lenteur de Vector compare a l'ArrayList.. pour moi c'est limite chipotage ...
    En plus Swing utilise Vector et jamais l'ArrayList.. alors que choisir ??

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  12. #12
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Swing utilise Vector , donc si je me mets sur un vector , je pourrai plus facilement faire une IHM ?
    Sa m'arrange bien si c'est le cas , le but a la fin et de faire un lecteur de compte , puis de personnages du compte pour y affichier les items , levels ect.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  13. #13
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Pour initialiser une JComboBox, une JList ou une JTable par exemple, il y a des constructeurs qui supportent les Vectors, ce n'est pas le cas pour les ArrayList, la il faut les transformer en array ...

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  14. #14
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Vector a été diabolisé pendant un moment (je me rappelle qu'on les brulait en place publique et qu'on tondait ceux qui l'utilisaient) mais apparement il a été rétabli et remis au goût du jour.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  15. #15
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bulbo
    Pour initialiser une JComboBox, une JList ou une JTable par exemple, il y a des constructeurs qui supportent les Vectors, ce n'est pas le cas pour les ArrayList, la il faut les transformer en array ...

    Bulbo
    Tiens c'est vrai !
    C'est bizarre quand même de la part de Sun qu'ils n'aient pas rajouter un constructeur avec une List.
    L'intérêt des Collections c'est justement l'abstraction de l'implémentation...

    Sinon en général j'utilise un ArrayList car dans 99% des cas je n'ai pas besoins de synchronization...

    a++

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

Discussions similaires

  1. [débutant][Conception] Structure dynamique avec Java
    Par blaiseac dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 23h00
  2. [débutant][Conception] Comment faire un arbre?
    Par dr_m1 dans le forum Général Java
    Réponses: 4
    Dernier message: 08/10/2004, 00h08
  3. [débutant][Conception] Modélisation pour éviter le getClass()
    Par Oliveuh dans le forum Général Java
    Réponses: 9
    Dernier message: 28/06/2004, 20h00
  4. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  5. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 23h58

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