Salut !

J'ai un souci avec une hashmap, avant, j'introduis le problème.
Je dois gérer un hopital (simplement), j'ai des patients identifiés par leur SSN (social security number) et des docteurs identifiés par leur numéro de badge.
Un patient ne peut avoir qu'un docteur, un docteur peut avoir plusieurs patients.

Pour gérer tout ça, j'utilise donc les collections (import java.util.*) et trois tables de hachage (pour la recherche par clé).
La première pour gérer les patients admis dans l'hopital, la clé est le SSN du patient, la valeur le nom du patient.
La seconde pour gérer les médecins de l'hopital, la clé est le numéro du badge, la valeur le nom du docteur.
La troisième link les patients aux docteurs avec comme clé le nom du patient.

A partir de là, j'arrive à faire toutes les fonctions qui peuvent me servir, sauf celle qui affiche tous les patients affiliés à un docteur donné.

J'ai en paramètre l'id du badge du médecin.
Donc je scanne ma table de hachage numéro 3 suivant les values, et à chaque fois que je trouve l'id du badge ben... ben je fais quoi ? Vu que j'utilise un iterator sur les values et pas sur les keys, une fois que j'ai la value souhaitée, je sais pas comment retrouver la clé qui lui était associée. J'ai farfouillé la doc java dans java.util, et j'ai rien trouvé qui puisse me servir (à supposer que j'utilise un KeySet, là j'aurai que les clefs, et je peux pas faire de recherche dessus vu qu'en paramètre de la méthode j'ai le badge ID, et que le KeySet ne me gardera que les SSN).

Je mets mon code quand même, ça peut servir (la partie qui coince est la dernière méthode, et j'ai tout commenté étant donné que ça ne me donnait pas le résultat escompté).

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
package hospital;
 
import java.util.*;
 
public class Hospital {
   private HashMap<String,Patient> patientsMap;
   private HashMap<Integer,Doctor> doctorsMap;
   private HashMap<String,Integer> patientDoctorMap;
 
   public Hospital(){
      patientsMap = new HashMap<String,Patient>();
      doctorsMap = new HashMap<Integer,Doctor>();
      patientDoctorMap = new HashMap<String,Integer>();
   }
 
   public void addPatient(String first, String last, String ssn) {
      Patient p = new Patient(first,last,ssn);
      patientsMap.put(ssn, p);
   }
 
   public void addDoctor(String first, String last, int docID) {
      Doctor d = new Doctor(first,last,docID);
      doctorsMap.put(docID, d);
   }
 
   public void assignPatientToDoctor(String ssn, int docID) {
      patientDoctorMap.put(ssn, docID);
   }
 
   public void printDoctorOfPatient(String ssn)  {
      int i = patientDoctorMap.get(ssn);
      System.out.println(doctorsMap.get(i).getLastName());
   }
 
   public void printPatientsOfDoctor(int docID) {
      //for (Iterator<String> i = patientDoctorMap.keySet().iterator(); i.hasNext();){
         //String j = i.next();
         //if(patientDoctorMap.containsValue(docID))            
            //System.out.println(patientsMap.get(j).getLastName());
      }
   }
}