myArralist.contains (obj) всегда возвращает false, хотя myArraylist содержит указанный obj в java? - PullRequest
0 голосов
/ 28 августа 2011

Я пытаюсь проверить, содержит ли mylist данный объект или нет, где mylist является ArrayList типа myCustomClass.

Ответы [ 2 ]

3 голосов
/ 28 августа 2011

Если вы добавите экземпляр MyCustomClass в список, а затем проверьте, содержит ли он другой экземпляр MyCustomClass, он всегда вернет false, если вы не переопределите метод equals в своем пользовательском классе. Метод equals проверяет, является ли другой объект функционально равным этому объекту.

Не забывайте переопределять метод hashCode каждый раз, когда переопределяете метод equals. hashCode должно возвращать одинаковое значение для двух одинаковых объектов. Также, равные должны быть записаны так, чтобы это было симметрично: a.equals(b) тогда и только тогда, когда b.equals(a).

Проверка равно и hashCode в Javadoc java.lang.Object.

1 голос
/ 28 августа 2011

Скорее всего, вы не внедрили equals() и hashcode() на myCustomClass. Вам необходимо правильно их реализовать, и в соответствии с контрактом, см. здесь , чтобы узнать, как это сделать.

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