Java 树集和删除特定的未命名对象

Java 树集和删除特定的未命名对象,java,object,tree,set,Java,Object,Tree,Set,因此,我正在为一项任务编写一个程序,将患者存储到树集合中。我面临的问题是,我必须实施一种方法,让一名特殊的患者从TreeSet出院 for(int i = 0; i < 10 ; i++){ Random ag = new Random(); int age = ag.nextInt(99) + 1; Names randomname = Names.getRandom(); String name = randomname.

因此,我正在为一项任务编写一个程序,将患者存储到树集合中。我面临的问题是,我必须实施一种方法,让一名特殊的患者从TreeSet出院

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));
    }
public static void admitPatient(Patient obj){
    if(numofPatients < maxPatients){
        patientList1.add(obj);
    }
}
}


由于我在创建患者对象时没有对其命名,而是直接将其插入树集中,因此我不确定在调用出院患者方法时如何准确地调用它们。

由于您通常希望使用选定对象(患者),而不是整个列表,因此您需要一种方法来识别它们(例如,通过名称或ID)

由于
add
remove
类似,因此您的
dischargePatient
方法也将类似。请尝试

public static void dischargePatient(Patient patient) {
     patientList1.remove(patient);
}
要检索具有特定ID的患者,您可以遍历集合并返回它:

public Patient getPatientByID(String id) {
    for (Patient patient : patientList1) {
        if (patient.getID().equals(id)) {
            return patient;
        }
    }
}
要删除ID为“1234abc”的患者,您可以执行以下操作:

dischargePatient(getPatientByID("1234abc"));
使用此模式,可以重建映射数据结构的功能。因此,最好使用映射(例如HashMap)。代码将简化为以下操作:

Map<String, Patient> patients = new HashMap<>();
patients.put("1234abc", patient1);  
patients.remove("1234abc");
Map患者=新建HashMap();
患者。put(“1234abc”,患者1);
患者。移除(“1234abc”);
示例的完整代码:

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

public static void dischargePatient(String id) {
    patients.remove(id);
}
公共静态无效住院患者(患者){
if(患者数<最大患者数){
patients.put(patient.getID(),patient);
}
}
publicstaticvoiddischargepatient(字符串id){
患者。移除(id);
}
public static void admitPatient(Patient patient) {
    if(numofPatients < maxPatients){
        patients.put(patient.getID(), patient);
    }
}

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