Какое влияние на производительность оказывает HashSet, если вы не предоставляете методы hashCode () для пользовательских классов? - PullRequest
0 голосов
/ 02 августа 2010

Если я добавлю объекты пользовательского класса в HashSet и не предоставлю для них методы hashCode (), как это повлияет на производительность хеширования?

Спасибо, Ajay

Ответы [ 2 ]

2 голосов
/ 02 августа 2010

Стандартная реализация, как упоминает Николаус, быстра и будет работать нормально.Не стесняйтесь использовать его , за исключением , когда вы переопределяете метод equals.Например, если два объекта Person «равны», если они имеют одинаковые getFirstName () и getLastName (), вы должны переопределить метод equals, чтобы проверить это, а также переопределить hashCode (), чтобы вернуть тот же хеш, когда значения для этихдва свойства одинаковы.

1 голос
/ 02 августа 2010

, если вы не определили свой собственный метод hashCode, вызывается метод из родительского класса вашего объекта. Если у вас нет определенного родителя, вызывается метод hashCode из класса Object. Согласно документации Java API, метод возвращает целое число в зависимости от адреса объекта - но, как именно это выполняется, зависит от jvm и операционной системы.

В итоге - если вы не укажете какие-либо методы hashCode, это все равно что поместить Object в hashTable.

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