繁体   English   中英

检查 2 个对象是否在数组中,然后将其变成一个对象

[英]Checking if 2 objects are in array then making out of it an object

我正在处理一个必须导入 3 个文本文件的问题:医生、患者、访问。 导入后,我需要将患者分配给医生并从中进行访问。

我的问题是,当我导入访问文件并创建对象访问时,它会获取患者的任何 ID 和医生的任何 ID。 我需要添加一点,它会检​​查文本文件的同一行中是否是医生的 ID 和患者的 ID,然后将它们分配在一起以创建一个对象。

我当前的代码显示了这一点:

  public static void main(String[] args) {

    List<Lekarz> lekarz = new ArrayList<>();

    try {
        File fileLekarze = new File("src/com/company/lekarze.txt");
        Scanner readerLekarze = new Scanner(fileLekarze);
        readerLekarze.nextLine();
        while (readerLekarze.hasNextLine()) {
            String[] data = readerLekarze.nextLine().trim().split("\t+");
            lekarz.add(new Lekarz(Integer.parseInt(data[0]), data[1], data[2], data[3], new SimpleDateFormat("yyyy-MM-dd").parse(data[4]), data[5], data[6]));
        }
        readerLekarze.close();

    } catch (FileNotFoundException e) {
        System.out.println("Error File Lekarze");
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }


    List<Pacjenci> pacjent = new ArrayList<>();

    try {
        File pacjenciFile = new File("src/com/company/pacjenci.txt");
        Scanner readerPacjenci = new Scanner(pacjenciFile);
        readerPacjenci.nextLine();
        while (readerPacjenci.hasNextLine()) {
            String[] data = readerPacjenci.nextLine().trim().split("\t");
            pacjent.add(new Pacjenci(Integer.parseInt(data[0]), data[1], data[2], data[3], new SimpleDateFormat("yyyy-MM-dd").parse(data[4])));
        }
        readerPacjenci.close();


    } catch (FileNotFoundException e) {
        System.out.println("Error File Pacjenci");
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }


    List<Wizyty> wizytyList = new ArrayList<>();

    try {
        File fileWizyty = new File("src/com/company/wizyty.txt");
        Scanner readerWizyty = new Scanner(fileWizyty);
        readerWizyty.nextLine();
        while (readerWizyty.hasNextLine()) {
            String[] data = readerWizyty.nextLine().trim().split("\t");

            Lekarz lekarz1 = lekarz.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);

            Wizyty wizyta = new Wizyty(Integer.parseInt(data[0]), Integer.parseInt(data[1]), new SimpleDateFormat("yyyy-MM-dd").parse(data[2]));

            wizytyList.add(wizyta);
        }
        readerWizyty.close();
    } catch (FileNotFoundException e) {
        System.out.println("Error File Wizyty");
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }
    System.out.println(wizytyList);
}

我用于访问的文本文件是这样的(医生 ID、患者 ID、日期):

Id_lekarza  Id_pacjenta Data_wizyty
  23             124     2006-12-13
  23             172     2006-1-25

(这是医生文件中的一行:医生 ID、姓氏、姓名、出生日期、NIP 号码、个人号码 PESEL)

Id_lekarza  Nazwisko    Imie    Specjalnosc Data_urodzenia  NIP PESEL
  23           Kadaj    Monika  laryngolog  1965-03-16   879-122-69-94  65031687654

(这是来自文件患者的一行:患者 ID、姓氏、姓名、个人编号 PESEL、出生日期)。

Id_pacjenta Nazwisko    Imie    PESEL   Data_urodzenia
     100    Kowal     Waldemar  01211309876 2001-1-13

该程序的目的是例如检查患者去看医生的次数,访问次数最多的医生等。

我已经从 Visit 的构造函数中删除了病人和医生。 你认为它是好的还是留下它并保留它的遗产更好?

现在还有代码,我将如何更改它以使用 Paitient 对象和 Doctor 对象来制作 Visit 对象?

还是不使用继承会更好?

该对象是在@Marcin 的帮助下创建的,但我正在展望我需要创建的方法。 你会建议吗?

“任何 id”是什么意思?

我的问题是,当我导入访问文件并创建对象访问时,它会获取患者的任何 ID 和医生的任何 ID。

肯定你在这里有错误:

            Pacjenci pacjenci1 = pacjent.stream()
                    .filter(m -> m.getIdPacjenta() == Integer.parseInt(data[0]))
                    .findAny()
                    .orElse(null);

您可以按医生 ID 筛选患者列表。 将其更改为:

            Pacjenci pacjenci1 = pacjent.stream()
                    .filter(m -> m.getIdPacjenta() == Integer.parseInt(data[1]))
                    .findAny()
                    .orElse(null);

将来,您可以通过在操作中创建变量来保存子产品来避免此类错误:

Integer doctorId = Integer.parseInt(data[0]);
Integer paitientId = Integer.parseInt(data[1]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM