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 :

java.util.Collection : possibilité d'insérer des objets de types différents?


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Points : 15
    Points
    15
    Par défaut java.util.Collection : possibilité d'insérer des objets de types différents?
    Bonjour à tous,

    J'aimerais savoir si c'est possible d'insérer des objets de différents types dans une Collection (java.util.Collection)?

    Si oui, j'aimerais connaître la façon d'itérer sur les éléments afin de faire le "casting" pour récupérer les données.

    J'ai fait un test JUnit pour valider si cela fonctionnait et j'en suis arrivé à une boucle sans fin. Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Collection col = new ArrayList();
     
    col.add("1"); // Ajout d'un objet String
    col.add(Integer.valueOf(1)); // Ajout d'un objet Integer
     
    Iterator it = col.iterator();
     
    while(it.hasNext()) {
    	System.out.println("test");
    }
    Merci !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu n'utilises pas la méthode next pour passer à l'élément suivant, d'où la boucle infinie.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Tu n'utilises pas la méthode next pour passer à l'élément suivant, d'où la boucle infinie.
    Évidemment!

    C'est Lundi!

    Donc, ce n'est pas vraiment une manière optimale d'utiliser une Collection? Le fait de procéder ainsi amènerait probablement des problèmes lors de l'exécution pour faire le "casting"...

    J'attends vos opinions là-dessus

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    C'est-à-dire que si de toute façon, tu dois mélanger des types différents, alors tu n'as pas franchement le choix et une Collection n'est pas plus bête qu'autre chose (voire est exactement ce qu'il faut.)

    Il faudra juste vérifier quelle est la classe véritable de l'objet récupéré dans la liste, avant de le caster.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while(i.hasNext()) {
     Object o = i.next();
     if(o instanceof Integer) {
      Integer i = (Integer)o;
      ...
     } else if(o instanceof String) {
      String s = (String)o;
      ...
     }
     ...
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Tu peux mettre tout ce que tu veux dans une Collection si tu déclare une Collection<Object> (version java >= 1.5) sinon Collection.
    Pour le cast c'est soit tu utilise la méthode de thelvin ou tu récupère dans l'ordre avec lequel t'a inséré après tout tu sais ce que t'a mis dans ta collection
    A++

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/11/2011, 14h20
  2. java.util.Collections.sort() je n'y comprends rien
    Par cmako dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 17/09/2007, 14h01
  3. itération sur des objets de types différents ?
    Par jc63 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/09/2007, 08h19
  4. Insérer des Objets
    Par Fred2209 dans le forum MFC
    Réponses: 14
    Dernier message: 22/12/2006, 20h28
  5. Réponses: 3
    Dernier message: 16/10/2006, 11h06

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