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 :

Map & Co


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Par défaut Map & Co
    Bonjour,

    débutant en Java, je suis en train d'apprendre l'utilisation des Collections.
    Pour ce faire je voudrais créer un tableau multiple du type Map dont la structure interne serait celle-ci :

    monTableau[Integer][String][Integer ou String]

    Mais est-il possible de créer un tableau dont la valeur n'est pas strictement définie ?

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    Je ne suis pas sûr de comprendre ce que tu veux avoir.
    Est-ce une structure qui te renverrait un objet de type String ou Integer à partir d'un couple (Integer,String)?

  3. #3
    Membre averti
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Par défaut
    Oui c'est ca. C'est vrai que c'est pas simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Map<String,String> sousTableau1= new HashMap<String, String>();
    Map<String,Integer> sousTableau2 = new HashMap<String, Integer>();
    Map tableau;
     
    sousTableau1.put("souscle1","valeur1");
    sousTableau2.put("souscle2",123456789);
     
    tableau.put("cle1",souscle1);
    tableau.put("cle1",souscle2);
    Voilà, ce code est-il correcte ou existe t-il une autre façon de procéder ?

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Merci pour l'exemple

    Donc en somme, tu as une Map<String, Map<String, T>> où T peut être soit Integer ou String.

    Dans ce genre de cas là, tu dois remplacer T par le type commun adéquat (classe parente ou interface) puis caster (si nécessaire) au moment où tu récupères la valeur.

    Dans ton exemple, pour String et Interger, tu ne peux pas mettre autre chose que Object (à moins que Comparable ou Serializable correspondent à ton usage).
    Tu as donc une table de type : Map<String, Map<String, Object>>.

  5. #5
    Membre averti
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Par défaut
    Et au moment de récupérer la valeur je n'ai qu'à caster en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Integer maValeur = (Integer) monObjet.get("souscle2");
    C'est correcte ?

  6. #6
    Membre averti
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Par défaut
    Merci legentil, en effet je n'avais pas du tout penser à passer par une classe.
    C'est dingue ce que apprend comme truc

    Et bien merci à vous deux pour votre aide, je vais essayer quelque chose dans ce genre.

  7. #7
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    En fait, tu dois réfléchir en fonction de ton besoin. Si cela a un sens, tu peu très bien aussi considérer que tu as une seule map qui a en clé une classe de ton cru qui contiendrait ta clé et ta sous clé.

    Il faut que tu essaies de mettre en place une solution la plus adaptée à ce qui est modélisé. Ainsi, ça sera plus facile à maintenir et faire évoluer.

    Nous t'avons donné des pistes, mais c'est à toi de juger ce qui est le mieux.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Par défaut
    Salut,

    Les maps en java servent à enregistrer des couples clé-valeur,
    Si tu veux utiliser ton premier integer comme clé, et tes deux valeurs suivante comme valeur, tu peux faire quelque chose comme :

    - Créer une classe qui contient des deux derniers objets comme données membres (Un de type String et un de type Object (qui pourra ainsi contenir soit un String, soit un Integer)
    - Utiliser cette classe comme valeur de ta map

    Ce qui nous donne :

    HashMap<Integer, TaClasse>taListe = new HashMap<Integer, TaClasse>();

    qui te permettra de stocker un couple String, Integer/String par clé (Integer).

    Par contre si ce que tu veux c'est faire l'équivalent d'un tableau à 3 dimensions, je ne sais pas si tu pourra te dépatouiller (sans faire des trucs trop bricolo) avec des maps

    En espérant que ça t'aidera !

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

Discussions similaires

  1. [EJB2.1 Entity] [BES] Mapping automatique et clés étrangères
    Par Bobby McGee dans le forum Java EE
    Réponses: 3
    Dernier message: 15/10/2003, 10h33
  2. Réponses: 2
    Dernier message: 11/07/2003, 18h24
  3. Problème avec memory mapping
    Par gemai dans le forum C
    Réponses: 13
    Dernier message: 04/07/2003, 09h50
  4. Editeur de MAP en delphi pour jeux directX
    Par PetitScorpion dans le forum DirectX
    Réponses: 5
    Dernier message: 09/07/2002, 18h47

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