2013-08-11 4 views
0

Donc, je suis en train d'écrire un programme pour une affectation où je stocke des patients dans un TreeSet. Le problème que je suis est que je dois mettre en œuvre une méthode pour décharger un patient spécifique de l'TreeSet.TreeSets et la suppression des objets sans nom spécifiques

for(int i = 0; i < 10 ; i++){ 
     Random ag = new Random(); 
     int age = ag.nextInt(99) + 1; 
     Names randomname = Names.getRandom(); 
     String name = randomname.name(); 
     String sex; 
     if(Math.random() > 0.5)sex = "female"; 
     else sex = "male"; 
     Random sn = new Random(); 
     int serial = sn.nextInt(10000) + 1; 
     Address randomAddress = Address.getRandom(); 
     String address = randomAddress.name(); 
     Hospital.admitPatient(new Patient(age, name, sex, serial, Birthday.produceBirthday(), address)); 
    } 

donc ce que je suis mise en boucle pour obtenir les patients et les informations statistiques pour l'objet patient. La méthode admettre patient les ajoute à TreeSet.

public static void admitPatient(Patient obj){ 
    if(numofPatients < maxPatients){ 
     patientList1.add(obj); 
    } 
} 

Le problème que je rencontre est avec la méthode du patient de décharge. Là où je ne sais pas quoi mettre dans la méthode

public static void dischargePatient(What do i put here in the driver when i call this method?){ 
    patientList1.remove(w/e i put up there); 

}

Depuis que je n'ai pas nommé les objets de patients lors de leur création mais juste les inséra directement dans le TreeSet Je ne suis pas sûr exactement comment les appeler quand j'appelle la méthode du patient de décharge.

Répondre

2

Comme vous souhaitez généralement travailler avec des objets sélectionnés (patients) et non avec la liste complète, vous devez trouver un moyen de les identifier (par exemple par nom ou ID).

Puisque add et remove sont similaires, votre méthode dischargePatient sera similaire. Essayez

public static void dischargePatient(Patient patient) { 
    patientList1.remove(patient); 
} 

Pour récupérer un patient avec un certain ID, vous pouvez itérer votre jeu et le retourner:

public Patient getPatientByID(String id) { 
    for (Patient patient : patientList1) { 
     if (patient.getID().equals(id)) { 
      return patient; 
     } 
    } 
} 

Pour supprimer un patient avec ID « 1234abc », vous pouvez faire ce qui suit:

dischargePatient(getPatientByID("1234abc")); 

En utilisant ce modèle, vous reconstruisez la fonctionnalité de la structure de données cartographiques. Ainsi, il pourrait être préférable d'utiliser une carte (par exemple, HashMap <>). Code sera réduite à des opérations telles que:

Map<String, Patient> patients = new HashMap<>(); 
patients.put("1234abc", patient1); 
patients.remove("1234abc"); 

code complet pour votre exemple:

public static void admitPatient(Patient patient) { 
    if(numofPatients < maxPatients){ 
     patients.put(patient.getID(), patient); 
    } 
} 

public static void dischargePatient(String id) { 
    patients.remove(id); 
} 
Questions connexes