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 :

Inverser une Map


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut Inverser une Map
    Bonjour,

    J'ai une Map<K, V> et je cherche a en inverser le sens (les roles de Key et Value). Ou mieux, avoir les deux champs qui servent de clef... J'ai pas trouve ca dans les classes implementant Map et je sais pas trop ou chercher d'autre.
    Merci d'avance !!!

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Effectivement ça n'existe pas (et ne peut pas exister de manière standard): dans une classe, les clés sont uniques, alors que les valeurs ne le sont pas forcément.
    Une inversion n'est donc pas "sûre", puisqu'elle pourrait écraser (et donc perdre) des données.

    Si tu es assuré de l'unicité des valeurs de ta Map, tu peux développer toi même ta méthode d'inversion (par exemple en héritant de la classe HashMap )
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Ok je vais peut etre devoir faire ca, merci pour ta reponse.

  4. #4
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    pour inverser le sens, une solution est de créer une map Map<TypeValue,TypeKey>, tu fais une boucle qui parcours ta map et tu enregistres l'ancien clé dans value et l'ancienne value dans clé. A la fin tu liberes la mémoire de ton ancienne map si tu en as pas besoin.
    Le problème est que tu n'as pas interet à avoir des valeurs qui etaient identiques dans ta premiere map car la Key d'une map est unique.

    pour avoir les deux champs qui servent de clef, une solution est de créer une classe interne qui contient tes 2 attributs et faire un constructeur avec les 2 parametres. Ensuite tu créés une map Map<ClasseInterne, TypeValue>, tu fais une boucle avec à l'interieur quelque chose du genre: map.put(new ClasseInterne(ancienneCle,ancienneValue), TaValue)

    Bonne chance

  5. #5
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Sinon il y a les BidiMap dans les Jakarta Commons Collections...

    a++

Discussions similaires

  1. Comment parcourir une map en sens inverse
    Par alen dans le forum SL & STL
    Réponses: 8
    Dernier message: 03/08/2008, 20h24
  2. problème de références _ptr dans une map STL
    Par Mr_Tyu dans le forum CORBA
    Réponses: 1
    Dernier message: 10/08/2004, 10h39
  3. [ MAP ] Choix d'une MAP
    Par mawashee dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 09/08/2004, 16h39
  4. Technique pour faire une map en relief
    Par rvzip64 dans le forum OpenGL
    Réponses: 4
    Dernier message: 28/06/2004, 22h44
  5. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09

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