Как проверить, существует ли объект с дублированным свойством LocalDateTime внутри ObservableArray? - PullRequest
0 голосов
/ 16 февраля 2020

Я написал метод addAppointmentSaveButtonClicked, который создает такой объект:

        Appointment newAppointment = new Appointment(appointmentId, chosenCustomerId, appointmentType, startDateTime, endDateTime, customerName);

Затем он добавляет этот объект в observableArrayList следующим образом:

        MainScreenController.appointmentDisplayList.add(newAppointment);

Теперь, когда я хочу создать новое назначение или редактирование существующего, я хочу проверить, есть ли уже одно с таким же временем начала в массиве assignDisplayList.

StartDateTime - переменная LocalDateTime, которая выбирается из меню комбинированный список и всегда форматируется следующим образом: 2020-02-15 10:30:00 в 30-минутные интервалы и нет проблем с миллисекундами или чем-то подобным.

Что я сделал до сих пор:

Я создал следующий метод, который выполняет итерацию по назначению, как это:

    public static boolean existingAppointment(LocalDateTime ldt) {
    for (Appointment app : appointmentDisplayList) {
        if (app.getStart() == ldt) {
            System.out.println("True");
            return true;
        }
    }
    System.out.println("False");
    return false;
}

Затем, когда нажимается кнопка сохранения, я помещаю код создания объекта в IF кодовый блок следующим образом:

if(!existingAppointment(startDateTime)) {
        AppointmentMethods.addAppointment(appointmentType, chosenCustomerId, utcStartTime, utcEndTime);
        appointmentId = AppointmentMethods.getAppointment(chosenCustomerId, utcStartTime).getAppointmentId();

        Appointment newAppointment = new Appointment(appointmentId, chosenCustomerId, appointmentType, startDateTime, endDateTime, customerName);
        MainScreenController.appointmentDisplayList.add(newAppointment);}

Теперь проблема, с которой я сталкиваюсь в своем коде, заключается в том, что каждый раз, когда я выбираю для своего нового назначенного момента дату и дату, это если блок всегда становится ложным, и дубликаты встреч добавляются в мой ArrayList.

I надеюсь, что любой опытный программист может помочь мне понять, что я делаю здесь неправильно? Заранее спасибо!

1 Ответ

0 голосов
/ 16 февраля 2020

Для объектов == проверяет, являются ли они одним и тем же объектом. При условии, что он настроен правильно, .equals() проверяет, имеют ли они одинаковое значение. Хорошее обсуждение настройки .equals см. В хорошем обзоре переопределяющих равных, включая визуализацию этой проблемы

. Поэтому вам нужно было app.getStart().equals(ldt) для сравнения значений даты, чтобы увидеть если оба объекта представляют одну и ту же дату. app.getStart() == ldt проверял, был ли это один и тот же объект, а это не то, что вы хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...