Сравнение объекта с объектами в коллекции

72
27 марта 2022, 12:50

Всем доброго времени суток. Есть объект Cat. Есть коллекция private Map<Long, Cat> dataBase в который хранятся другие объекты и их id. У объекта Cat условно несколько полей (например name и weight). Задача в том, чтобы написать метод в параметры которого передается (Cat cat) и надо понять, есть ли такой объект в коллекции. (Если что я делаю регистрацию, но это уже другая история). Есть класс Cat в котором есть конструктор, пару методов и переопределенный метод equals и HashCode

public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Cat cat = (Cat) obj;
    return name.equals(cat.name) &&  weight.equals(cat.weight);
}
@Override
public int hashCode() {
    return Objects.hash(name, weight);
}

Далее есть метод получения всех кошек

 public List<User> getAllCats() {
    return new ArrayList<>(dataBase.values());
}

Я написал метод проверки на наличие котов таким вот способом

    public boolean isExists(Cat cat) {
    List<Cat> cats = getAllCats();
    Iterator<Cat> iterator = cats.iterator();
    while (iterator.hasNext()){
        if(iterator.equals(cat)){
            return true;
        }
    }
    return false ;

Ну собственно вопрос 1) что я сделал не так 2) Как бы сделали вы 3) Нужно сделать именно одним методом

READ ALSO
Не понятно условие

Не понятно условие

Не погу понять условие в цикле

115
Ошибка Connection TimeOut через java.net

Ошибка Connection TimeOut через java.net

Вот часть кодаДело в том, что, если напрямую в браузере забить URL https://maps

197
В чем принципиальные отличия Spring Cache и Hibernate Cache?

В чем принципиальные отличия Spring Cache и Hibernate Cache?

Помогите понять - в чем принципиальные отличия Spring Cache и Hibernate Cache? Помимо возможностей включения 2-го и 3-го уровней в Hibernate

189
Как сделать простой Random 1-5 в textView на экран

Как сделать простой Random 1-5 в textView на экран

Как сделать простой Random (выпадающие одно число от 1 до 5 )

217