Удалене объектов с одинаковыми полями

162
20 сентября 2019, 04:20

У меня ест ькласс Human c полями

private String name;
private String age;
private String weight;

Я создаю объекты класса и сохраняю их в List. Как мне убрать из списка объекты. с одинаковым полем nameи оставить их всег ов одном экземпляре?

Или как мне переопределить методы equals() и hashCode() для TreeSet?

Answer 1

Для достижения вашей цели не обязательно переопределять equals и hashcode, но для работы с TreeSet ваш класс должен реализовать интерфейс Comparable, в противном случае поймаете ClassCastException:

class Human implements Comparable<Human> {
    private String name;
    private String age;
    private String weight;
    public Human(String name, String age, String weight) {
        this.name = name;
        this.age = age;
        this.weight = weight;
    }
    @Override
    public int compareTo(Human o) {
        return name.compareTo(o.name);
    }
}

либо можно создасть коллекцию с помощью компаратора:

Set<Human> set = new TreeSet<>(Comparator.comparing(Human::getName));
Answer 2
public override bool Equals(Object obj) 
{
    return this.name == ((Human)obj.name);
}

Вот так можно перегрузить метод Equals.

READ ALSO
Linked list и работа с объектом

Linked list и работа с объектом

Видел что именно так надо объявлять и так правильней

119
Считывание нажатий виртуальной клавиатуры

Считывание нажатий виртуальной клавиатуры

Как считывать нажатия кнопок в виртуальной клавиатуре телефона? К примеру я нажал "Enter" и появился тоаст "Вы нажали ентер"Либо нажал на какой-нибудь...

104
Выдает всегда false

Выдает всегда false

Вот задача Есть поле из клеток по средине которого находится роботРобот умеет выполнять 4 команды: двигаться на 1 клетку в сторону: R (right), L (left),...

121