Использование методаava () в Java - PullRequest
0 голосов
/ 02 декабря 2018

Могу ли я использовать функцию has (), чтобы проверить, существует ли уже элемент, который я пытаюсь вставить в Arraylist?

protected void addTeacher(Teacher t){
        if (!(teacherList.contains(t)))
            teacherList.add(t);
    }

Я создал класс учителя.Спасибо,

Ответы [ 3 ]

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

Да, вы можете использовать метод contains. Вам нужно будет реализовать метод equals (), если вы хотите достичь значимого (т. Е. Оба объекта имеют одинаковое значение для всех полей) равенства, а не только ссылок на объекты.

Lookздесь, в Oracle документы: https://docs.oracle.com/javase/7/docs/api/java/util/List.html#contains(java.lang.Object)

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

в вашем классе Teacher вы должны переопределить метод равно и определить для программы, какова ваша стратегия для равенства двух объектов .Тогда вы можете прекрасно использовать метод содержит.

Обратите внимание, что лучшим решением является использование Set .

a Набор никогда не сохраняет в нем дублирующийся объект.для использования Set вы должны переопределить методы equals и hashCode.

обратитесь к этой теме, я объяснил все ясно для кого-то с похожим вопросом -> equals andметоды hashCode

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

Да, использование .contains() должно работать для вашего случая.Однако, в зависимости от того, как выглядит остальная часть вашего кода, вы можете рассмотреть возможность использования чего-то другого, кроме ArrayLists.Например, если вы используете set, вам не нужно будет делать .contains(), потому что set не может содержать дубликаты.

...