Java Сравнение объектов Списки, чтобы найти дубликаты и поместить их в новый список - PullRequest
0 голосов
/ 26 апреля 2019

При сравнении двух списков одного и того же объекта, чтобы найти, где они дублируются, список с обоими всплывающими пустыми.

List<Appointment> appointmentByName = sM.getAppointmentByName(first.getText(),last.getText());
List<Appointment>appointmentByDate=sM.getAppointmentByDate(LocalDate.now());System.out.println(appointmentByName);
//Populating the lists (This works)


List<Appointment> common = appointmentByDate.stream().filter(appointmentByName::contains).collect(toList());

После заполнения списков я хочу найти одинаковые объекты встреч и поместить их в новый список, например,

List1 [Appointment@20, Appointment@c3, Appointment@d9, Appointment@175]
List2 [Appointment@23, Appointment@175]
List3 [Appointment@175]

равно переопределению в классе назначений

public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Appointment)) return false;
    Appointment that = (Appointment) o;
    return id == that.id;
}

Однако общий список пуст, любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Soloution; Изменено равное переопределение в классе Appointment с

public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Appointment)) return false;
Appointment that = (Appointment) o;
return id == that.id;
}

до

public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Appointment)) return false;
Appointment that = (Appointment) o;
return id.equals(that.id);
}
0 голосов
/ 26 апреля 2019

Не уверен, правильно ли я понял ваш вопрос, но мне кажется, что вы пытаетесь пересечь два списка здесь.Если да, вы можете сделать это с помощью метода retainAll () Collection:

list1.retainAll(list2)

list1 теперь будет содержать только дубликаты обоих списков

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