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

Java Discussion :

[Stratégie] Générer des noms de variables


Sujet :

Java

  1. #21
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Il y a des méthodes get dans l'interface List... Iterator peut-être sympa aussi, pour parcourir tous les éléments d'une collection de manière séquentielle.

    Si tu es en java 5, tu peux aussi utiliser la boucle for each

    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
    17
    18
     
    // pas beau !
    List list = new ArrayList();
    for(int i=0; i<list.size(); i++) {
      Object o = list.get(i);
    }
     
    // un peu mieux
    List list = new ArrayList();
    for(Iterator i = list.iterator(); i.hasNext();){
      Object o = i.next();
    }
     
    // le top en java 5
    List<Toto> list = new ArrayList<Toto>();
    for(Toto t : list){
      // utilise t en tant qu'instance de "Toto"
    }

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    Oula, qu'est ce que :
    for(Toto t : list) ?
    et aprés, je vois toujours pas comment accéder à un elément de la liste :s
    (dsl de mes faibles connaissances)

  3. #23
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par Rekiem
    (dsl de mes faibles connaissances)
    faut surtout pas s'excuser de ne pas tout connaître !

    cette boucle, c'est la nouvelle boucle "for each" qui a fait son apparition avec le dernier JDK. La syntaxe est super simple:

    for
    --> ça, tu connais

    (Toto t : list) {...}
    --> "Toto", c'est le type des variables que l'on parcourt dans la liste
    --> "t", c'est le nom de la variable qui va stocker temporairement chaque élément parcouru
    --> " : list ", ça signifie que les éléments à parcourir sont stocké dans la liste "list"

    Ensuite, cela s'utilise comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    List<Toto> list = new ArrayList<Toto>(); // une liste de "Toto"
     
    for(Toto t : list) {
      t.method(); // A chaque passage dans la boucle, "t" stocke l'élément suivant
    }
    PS: ce que tu dois mettre après les deux-points (:) n'est pas forcément une List ou une Collection, mais n'importe quelle référence d'une instance implémentant l'interface "Iterable" (normalement, tu ne devrais jamais avoir à créer tes propres classes implémentant cette interface)


    Enfin, si tu dois accéder à un élément particulier (le 5ème p.ex.), tu dois utiliser la méthode get:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<Toto> list = new ArrayList<Toto>();
    Toto t = list.get(4); // 5ème él. = index 4 !

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    Ok merci pour tes explications

    Maintenant je voudrais un peu plus creuser le sujet si par exemple j'ai ma classe Toto qui contient des propriétés, des constructeur voir des méthodes. Dans mon main je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ArrayList<Toto> liste = new ArrayList<Toto>();
     
    // code de l'application... et :
     
    liste.add(new Toto());
    Je voudrais que dans ce nouvel objet de type Toto que j'ajoute à ma liste, je lui donne un identifiant et que je remplisse ses propriétés, j'utilise ses méthodes... Comment faire ?

  5. #25
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    N'utilisez pas les Vector, meme en environnement multitache. A la place creez une List (ArrayList par exemple) et appelez Collections.synchronizedList(List) qui vous renvoie une version synchronized de votre List.

  6. #26
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Ahh ? Changement de cap bien noté chef .
    Tu conseilles egalement la meme chose pour les maps ? A savoir remplacer Hashtable par Collections.synchronizedMap().
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #27
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Oui

  8. #28
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    hum.. vous parliez de quoi la ??? et pour ma question, vous avez une idée ?

  9. #29
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Pour ton probleme de noms de variables une Map<String, ton type ici> me semble tout indiquee. Qqun d'autre avait deja fait cette suggestion sur la page precedente.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #30
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    Mais on a bien répondu a ma question de départ merci !

    Ma dernière question, c'est au niveau de mon dernier post !

  11. #31
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    Je comprends pas la question.
    Soit tu crées un objet avant de le rentrer dans ta liste:

    Toto t = new Toto();
    liste.add(t);
    t.maMethode();

    ou alors plus simple tu l'appelles dans ta liste:

    liste = new ArrayList<Toto>();
    liste.add(new Toto());
    liste.get(0).maMethode;

  12. #32
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    liste = new ArrayList<Toto>(); 
    liste.add(new Toto()); 
    ...
    Toto t = liste.get(0);
    t.setMethode1(valeur1);
    t.setMethode2(valeur2);
    t.setMethode3(valeur3);
    t.setMethode4(valeur4);
    si tu dois faire plusieurs appels de méthodes successifs pour "setter" toutes les valeurs. L'accès via get() peut-être couteux suivant le type de liste. D'où l'intéret de constructeur permettant de passer toutes les valeurs directement au départ.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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