如何修改代码将Visits对象关联至对应Doctor与Patient的列表?
同步就诊记录到医生与患者的就诊列表解决方案
已完成patients、doctors、visits三个文件的导入加载,且定义了以下类:
- Wizyty(Visits)类:关联Lekarze(Doctor)对象、Pacjenci(Patient)对象及就诊日期
- Lekarze(Doctor)类:包含
List<Wizyty> listOfDoctorVisits属性,用于存储该医生的所有就诊记录 - Pacjenci(Patient)类:包含
List<Wizyty> listOfPaitientVisits属性,用于存储该患者的所有就诊记录
当前已实现读取visits文件创建Wizyty对象并加入wizytyList,但需要将每条就诊记录同步添加到对应医生和患者的专属就诊列表中,修改方案如下:
第一步:确保类中列表属性已初始化
在Lekarze和Pacjenci的构造函数中提前初始化就诊列表,避免空指针异常:
// Lekarze类构造函数示例 public Lekarze(/* 其他参数 */) { // 初始化其他属性 this.listOfDoctorVisits = new ArrayList<>(); } // Pacjenci类构造函数示例 public Pacjenci(/* 其他参数 */) { // 初始化其他属性 this.listOfPaitientVisits = new ArrayList<>(); }
第二步:修改就诊记录读取代码
在创建Wizyty对象并加入wizytyList后,添加代码将该就诊记录同步到对应医生和患者的列表中(先判断对象是否存在,避免空指针):
修改后的完整代码:
List<Wizyty> wizytyList = new ArrayList<>(); try { File fileWizyty = new File("src/com/company/pliki/wizyty.txt"); Scanner readerWizyty = new Scanner(fileWizyty); readerWizyty.nextLine(); // 跳过表头 while (readerWizyty.hasNextLine()) { String[] data = readerWizyty.nextLine().trim().split("\t"); Lekarze lekarze1 = lekarze.stream() .filter(m -> m.getIdLekarza() == Integer.parseInt(data[0])) .findAny() .orElse(null); Pacjenci pacjenci1 = pacjent.stream() .filter(m -> m.getIdPacjenta() == Integer.parseInt(data[1])) .findAny() .orElse(null); // 仅当找到对应的医生和患者时,创建就诊记录并同步 if (lekarze1 != null && pacjenci1 != null) { Wizyty wizyta = new Wizyty(lekarze1, pacjenci1, new SimpleDateFormat("yyyy-MM-dd").parse(data[2])); wizytyList.add(wizyta); // 同步到医生的就诊列表 lekarze1.getListOfDoctorVisits().add(wizyta); // 同步到患者的就诊列表 pacjenci1.getListOfPaitientVisits().add(wizyta); } else { // 可选:打印日志提示未找到对应医生/患者 System.out.println("未找到ID为" + data[0] + "的医生或ID为" + data[1] + "的患者,跳过该就诊记录"); } } readerWizyty.close(); } catch (FileNotFoundException e) { System.out.println("Error File Wizyty"); e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); }
关键修改点说明
- 空值判断:添加
if (lekarze1 != null && pacjenci1 != null)判断,避免因找不到医生/患者导致的空指针异常 - 同步添加:在创建Wizyty对象后,调用医生和患者对象的列表
add()方法,将当前就诊记录加入对应列表 - 可选日志:添加未找到对象时的提示,便于排查数据问题
文件格式示例
Doctor(lekarze.txt)文件
Id_lekarza Nazwisko Imie Specjalnosc Data_urodzenia NIP PESEL 23 Kadaj Monika laryngolog 1965-03-16 879-122-69-94 65031687654
Patient(pacjenci.txt)文件
Id_pacjenta Nazwisko Imie PESEL Data_urodzenia 100 Kowal Waldemar 01211309876 2001-1-13
Visits(wizyty.txt)文件
Id_lekarza Id_pacjenta Data_wizyty 23 124 2006-12-13
内容的提问来源于stack exchange,提问作者wieszak09
相关产品推荐
相关产品推荐

