Java LinkedHashSet не удаляет дубликаты даже после переопределения методов equals и hashCode - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь удалить дубликаты из списка объектов, добавив все объекты в списке в набор и добавив данные обратно в список.Мой код выглядит следующим образом:

List<LocationHourListHB> locationHoursList = new ArrayList<LocationHourListHB>();
Set<LocationHourListHB> locationHoursSet = new LinkedHashSet<LocationHourListHB>();
locationHoursSet.addAll(locationHoursList);
locationHoursList.clear();
locationHoursList.addAll(locationHoursSet);

У меня есть LocationHourListHB следующим образом:

public class LocationHourListHB {
    private String startTIme;
    private String endTime;

    public String getStartTIme() {
        return startTIme;
    }
    public void setStartTIme(String startTIme) {
        this.startTIme = startTIme;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    @Override
    public boolean equals(Object o) {

        if (o == this) return true;
        if (!(o instanceof LocationHourDay)) {
            return false;
        }

        LocationHourListHB locationHour = (LocationHourListHB) o;

        return locationHour.startTIme.equalsIgnoreCase(startTIme) &&
                locationHour.endTime.equalsIgnoreCase(endTime);
    }

    //Idea from effective Java : Item 9
    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + startTIme.hashCode();
        result = 31 * result + endTime.hashCode();
        return result;
    }


}

Я добавил методы переопределения в equals () и hashCode (), но мой списоквсе еще содержит дубликаты.Есть ли здесь что-то, чего мне не хватает.

1 Ответ

0 голосов
/ 17 декабря 2018

Ваш equals метод не должен проверять:

if (!(o instanceof LocationHourDay)) {
    return false;
}

Он должен проверять:

if (!(o instanceof LocationHourListHB)) {
    return false;
}

Поскольку он сравнивает LocationHourListHB экземпляров.

...