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 :

Exploiter un hashmap


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
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut Exploiter un hashmap
    Bonjour tout le monde ,

    J'ai un petit problème avec un hashmap qui contient un hashmap.

    Mon hashmap est sous forme de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hashmap <Set<String>, Hashmap<Set<String>>, Float>
    Set<String> : ensemble de classes CS
    Hashmap<Set<String>>, Float> : un hashmap contient comme clé de classes correspondantes à CS et une mesure de pertinence de couple (CS, CR) (float).

    Ci joint une explication :
    problème.doc

    les CSi : Set<String>
    les CRj et les valeurs en rouge représentent Hashmap<Set<String>>, Float>

    Je veux parcourir cet hashmap : Hashmap <Set<String>, Hashmap<Set<String>>, Float> de telle façon de voir les lignes et les colonnes , je sais pas comment faire. Mon objectif est de voir par exemple d'après la matrice jointe que la ligne 1 contient plusieurs valeurs pour une même classe CS1 donc il faut prendre la valeur maximum et la garder dans la première ligne et pour les autres valeurs , je mets à jour le hashmap (ou autrement la matrice) et j'ajoute des autres lignes avec les autres valeurs. Tout simplement je veux que chaque ligne contient une valueur pour chaque classe. Merci de m'aider à avoir la bonne solution

  2. #2
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Salut,

    ce sera mieux comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map <String, Map<String, Float> map
    et la javadoc, ta nouvelle meilleur amie:
    http://java.sun.com/javase/6/docs/api/
    package java.util

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    Comment faire alors ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    D'abord, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hashmap <Set<String>, Hashmap<Set<String>, Float>>
    Sinon, ca ne compilera meme pas!

    Ensuite, est-tu conscient du type bizzare que tu défini la?

    Une map, dont les clés sont chacune un ensemble de String
    et donc les valeurs sont, chaque fois, une nouvelle map.

    Dans ces map qui servent de valeur, encore une fois, chaque clé est un nouvel ensemble de String, chacune. Visuellement, ca donnerais ce genre de structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [a,b,c] -> [ [A,B,C] -> 0.1
                 [D,E] -> 0.5
                 [F,G] -> 0.2 
               ]
    [x,y,z] -> [
                 [A,B] -> 9.4
                 [D,E,F,G] -> 6.7
               ]
    Est-ce ça que tu cherche??

    De plus, comme tu utilise des Set comme clé, ils doivent être immuables (ne peuvent être modifié) sinon tu va foutre le bazar dans la hashmap.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    merci tchize pour l'explication mais en fait ce que tu viens de l'expliquer , ce que je veux . à partir de la matrice que j'ai posté plus haut, mon objectif :
    j'ai une hashmap qui contient un ensemble de classe <Set<String>> qui sont mentionnées par CS1, CS2, ... dans la matrice que j'ai posté dans l'@ ci dessus et pour chaque CS1, CS2.. j'ai un ensemble de CR1, CR2.., la pertinence entre le couple (CSi, CRj) correspond une valeur c'est l'intersection des de CSi et CRj
    (les valeurs qui sont en rouge). Mon souci en fait, (c'est ça l'approche), quand j'ai plusieurs valeurs dans la même ligne, il faut que je prend le maximum et je le mets dans la première ligne (je vais éclater la classe CSi) et les autres valeurs de même ligne, je mets à jour le hashmap en ajoutant d'autres lignes de telle façon d'avoir à chaque ligne une valeur. prenons un exemple : j'ai une classe CS1 qui correspond à 3 classes CR, CS1={CR1,CR2, CR3}, la pertinence de (CS1, CR1) = 0.2, (CS1, CR2) = 0.3 , (CS1, CR3) = 0.4. la mise à jour de Hashmap sera en fait mettre la valeur maximum dans la première ligne c'est à dire (CS11, CR3) = 0.4 et les autre valeurs , on ajoute deux lignes de telle façon qu'on va avoir : (CS12, CR1) = 0.2 * une constante1 et (CS13, CR2) = 0.3 * une constante2, voilà . Puis il faut étudier
    le cas pour les colonnes, si j'ai plus qu'une valeur dans une colonne par exemple dans mon cas, la colonne de CR3 et CR4, alors il faut fusionner les lignes et faire la moyenne de la pertinence , autrement dit , citons l'exemple de (CS11, CR3) = 0.4 et (CS3, CR3) = 0.5 alors deux classes correspondent à la même classe CR3 donc on fusionne la classe ({CS11, CS3}, CR3) = (0.4+0.5)/2. voilà clairement mon problème c'est pour ça j'utilise :
    Hashmap <Set<String>, Hashmap<Set<String>, Float>>, comme j'ai expliqué plus haut.

    Voici la matrice que je veux obtenir en partant de l'ancienne : probsolution.doc

    Merci bien de m'aider à trouver une solution pour ce problème

    Merci infiniment

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Je n'ai rien pour ouvrir le .doc, prière donc de décrire sur le forum ce que tu cherche à obtenir.

Discussions similaires

  1. Exploitation de base sur un serveur Web
    Par Oz-WereWolf dans le forum Installation
    Réponses: 10
    Dernier message: 07/03/2004, 22h52
  2. exploiter un évènement d'un sous composant dans un
    Par bjl dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 16h44
  3. [VB6] Exploiter un doc PowerPoint avec VB
    Par Tranber dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/09/2002, 16h22
  4. [TP7]systeme d'exploitation
    Par numeror dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/08/2002, 08h47
  5. PB mise en exploitation
    Par DiceChris dans le forum CORBA
    Réponses: 21
    Dernier message: 05/07/2002, 16h05

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