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 :

[Language]Nom dynamique de Variable


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [Language]Nom dynamique de Variable
    Bonjour à tous, je suis un ti nouveau venant du Php et qui voulais depuis longtemps toucher aux joies du Java.

    Je fais quelques application pour aprendre ce langage et j'ai une petite question pour l'optimisation de mes boucles :

    Comment faire pour créer une boucle du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i = 1; i <= 15; i++)
    {
        Case case+i = new Case(i,"Départ");
    }
    je ne veux pas avoir a faire sa :
    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
     
                    Case case1 = new Case(1,"Départ");
    		Case case2 = new Case(2,"Bouh !!!");
    		Case case3 = new Case(3,"Et ta soeur !?");
    		Case case4 = new Case(4,"C'est cela oui...");
    		Case case5 = new Case(5,"Koi de neuf ?");
    		Case case6 = new Case(6,"Une tite gorgée");
    		Case case7 = new Case(7,"Deux tours sur un pied");
    		Case case8 = new Case(8,"Mime");
    		Case case9 = new Case(9,"Passe");
    		Case case10 = new Case(10,"Go Départ");
    		Case case11 = new Case(11,"Devinette");
    		Case case12 = new Case(12,"Histoire");
    		Case case13 = new Case(13,"Un ti verre");
    		Case case14 = new Case(14,"Presque");
    		Case case15 = new Case(15,"Bien !!!");
    je sais qu en php on peut faire :
    et on utilise pour récupérer les infos.

    Donc si vous pouviez me donner la syntaxe pour faire sa, merci d'avance.
    Et Joyeux Noel !!!!!!!! [/code]
    Laissez moi descendre le monde va trop vite !!

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Je ne crois pas que ce soit possible d'affecter des noms de variables en dynamique. Perso, je passerai par les tableaux en faisant un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String [] chaines={"chaine1","Chaine2","Chaine3",.....}
    Case [] cases=new Case[chaines.length];
    for(int i=0;i<cases.length;i++){
      cases[i]=new Case(i,chaines[i]);
    }
    qui dit mieux ?

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    ou éventuellement une HashMap<String,Case> dans le cas présent(ça t'évite les tableaux et tu disposera d'une méthode de recherche intégrée)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Pas faux pour la HashMap, mais apparement , son indexation lui est nécessaire. Dans ce cas je conseillerai plutôt le tableau.
    Mais cela dépend vraiment de ce dont il a réellement besoin.

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    dans ce cas tu peux passer par une LinkedHashMap qui conserve l'ordre d'ajout
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    ok merci pour ces pistes je vais continuer mes investigations et si vous avez d'autres pistes n'hésitez pas.
    Laissez moi descendre le monde va trop vite !!

  7. #7
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    et un truc : parcours dans l'autre sens.

    c'est à dire fait :

    for (int i=99;i>=0;i--)
    au lieu de :
    for (int i=0;i<=99;i++)

    la jvm est optimisée pour les comparaisons avec 0, 1, 2, ... 9 (de tete)

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par billou77
    et un truc : parcours dans l'autre sens.

    c'est à dire fait :

    for (int i=99;i>=0;i--)
    au lieu de :
    for (int i=0;i<=99;i++)

    la jvm est optimisée pour les comparaisons avec 0, 1, 2, ... 9 (de tete)
    heu... je ne vois pas trop le rapport avec ma question excuse moua
    Laissez moi descendre le monde va trop vite !!

  9. #9
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    tu parles de boucle à optimiser, moi j'optimise :o)

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    c'est vrai...quand on parle d'optimisation, allons jusqu'au bout

    En revanche je ne suis pas 100% d'accord avec la hashMap ou autre linkedHashMap.

    ce type d'objet est moins performant qu'un simple tableau si le nombre d'entrée est petit (entre 0 et qqch comme 250).

    Good luck !
    PHP / J2EE

  11. #11
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    ou éventuellement une HashMap<String,Case> dans le cas présent(ça t'évite les tableaux et tu disposera d'une méthode de recherche intégrée)
    Attention, n'oublions pas que nous sommes dans le monde Objet.

    Ses chaines "Bouh !!!", "Et ta soeur !?", "C'est cela oui..." sont des propriétés de ses instances de Case.
    Ainsi case1 contient une chaine "Bouh !!!",
    case2 contient une chaine "Et ta soeur !?",
    case3 contient une chaine "C'est cela oui..."

    Il ne faut donc pas externaliser cette propriété et la mettre en clé d'une table de hachage, à moins que ce ne soit pour faire des recherches sur ces chaines. Et encore, pour des soucis de perfs, il serait peut etre plus judicieux de mettre dans un [] ces chaines, et dans un autre [] les cases. (comme ce que conseille alheim). Ainsi à l'indice i on a dans le premier [] la chaine et dans le deuxieme [] son case correspondant.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    merci billou77...ca fait plaisir de se sentir soutenu....

    Plus sérieusement, c'est très important de bien comprendre qu'une HTABLE est assez lourde pour une application. Pour compenser cette lourdeur, il faut vraiment avoir besoin de stocker des centaines voir des milliers d'objets.

    Souvent la double liste index-objet et plus performante. C'est juste un peu plus dur a implémenter. Mais rien ne t'empeche de créer une petite classe qui englobe ces listes.
    PHP / J2EE

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    ok merci pour toutes ces réponses et dsl bilou de ne pas avoir compri. L'objet case est en fait ici la case d'un jeux de plateau qui contient pour l'instant juste le petit texte qui doit apparaitre sur la case du plateau à terme ces phrase seront surement dans une base de donnée, et l'objet case ira chercher son texte en fonction de son numéro.

    Je pense donc que la solution du tableau est pour l'instant la solution qui me convient le mieux
    Laissez moi descendre le monde va trop vite !!

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    et bien n'oublies pas de marquer ce sujet résolu !
    PHP / J2EE

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

Discussions similaires

  1. Nom Dynamique de variable
    Par Poor Frog dans le forum Général VBA
    Réponses: 2
    Dernier message: 25/04/2013, 11h04
  2. nom dynamique de Variables Tableau
    Par pimpmyride dans le forum Langage
    Réponses: 1
    Dernier message: 25/02/2009, 17h46
  3. [Variable] Déclarer une variable avec un nom dynamique
    Par jacquesh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2006, 14h11
  4. Réponses: 4
    Dernier message: 09/03/2005, 11h13
  5. variable à nom dynamique en javascript
    Par noa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/01/2005, 01h12

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