java - TreeSets 和删除特定的未命名对象

标签 java object tree set

所以我正在为一项作业编写一个程序,将患者存储到 TreeSet 中。我遇到的问题是我必须实现一种方法来从 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));
    }

这就是我循环获取患者信息和患者对象统计数据的方式。承认病人方法将它们添加到 TreeSet 中。

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

我遇到的问题是出院患者方法。我不知道该在方法中放入什么内容

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);

}

由于我在创建患者对象时没有命名它们,只是将它们直接插入到 TreeSet 中,所以当我调用出院患者方法时,我不确定如何调用它们。

最佳答案

由于您通常想要处理选定的对象(患者)而不是整个列表,因此您需要一种方法来以某种方式识别它们(例如通过名称或 ID)。

由于 addremove 相似,因此您的 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"));

使用此模式,您可以重建 map 数据结构的功能。因此,最好使用 Map(例如 HashMap<>)。代码将被简化为如下操作:

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

示例的完整代码:

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

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

关于java - TreeSets 和删除特定的未命名对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18177805/

相关文章:

javascript - 我可以创建一个可供所创建对象的每个属性使用的类方法吗?

Java-对象存在困境

c++ - 为什么我不能将方法链接到构造函数?

c++ - 反序列化 n 叉树

java - 我需要 "beginning android games"代码的解释

java - 有人能理解 java.lang.IllegalStateException : Only one Observer allowed in this short example?

java - Java 中的匿名类?

Java 组合 ImageIcons

python - 寻求目录树数据表示的优雅设计

SVN解决合并中的树冲突