Оптимизация равняется () методу

Способность заменить даже вещами как удаление файла, файл, открывающийся и т.д. - непосредственное управление библиотекой языка. Это - огромное преимущество когда тестирование. Вы не должны обертывать все в сложные контейнеры. Просто замените функцией/методом и пойдите. Это также называют исправление обезьяны.

5
задан Bill the Lizard 30 July 2012 в 03:58
поделиться

7 ответов

Некоторые общие идеи, которые не обязательно относятся к equals ()

  • Сбой как можно раньше . Подобно опубликованному вами фрагменту, сначала начните с самых широких критериев исключения, а затем сделайте более детализированным, чтобы метод мог вернуться как можно скорее
  • Сравните только атрибуты, необходимые для равенства . Я иногда видел, как люди сравнивают каждую отдельную часть информации, предоставляемой классом, даже несмотря на то, что лишь несколько атрибутов фактически играют семантическую роль для равенства двух экземпляров класса. Это, конечно, сильно зависит от вашего класса и дизайна
  • По возможности избегайте рекурсии равенства . В зависимости от того, какие атрибуты класса вы сравниваете,
14
ответ дан 18 December 2019 в 06:03
поделиться

Как написать метод равенства на Java - это чрезвычайно подробная и хорошо написанная статья, в которой объясняются распространенные ошибки при написании метода равенства и способы их избежать.

5
ответ дан 18 December 2019 в 06:03
поделиться

Я думаю, вы уже поняли ключевую часть этого, потому что вы сказали:

... когда они окажутся необходимыми.

Помните общие правила оптимизации:

  1. Не
  2. Не ... пока
  3. Профилируйте перед оптимизацией

Я слышал их в классе много лет назад, и насколько я могу судить, C2 является источником.

4
ответ дан 18 December 2019 в 06:03
поделиться

Вы можете взять реплику из интернирования строк .

Если ваши объекты неизменяемы, вы можете реализовать свое собственное «интернирование», используя статический заводской метод и заполнение уникальные экземпляры в хеш-таблицу. Если вы сделаете это, то при равенстве ссылок объекты будут равны.

1
ответ дан 18 December 2019 в 06:03
поделиться

Посмотрите книгу под названием «Эффективная Java» Джошуа Блоха. Там есть несколько замечательных советов и целый раздел по этому вопросу. Гудлак!

2
ответ дан 18 December 2019 в 06:03
поделиться

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

1
ответ дан 18 December 2019 в 06:03
поделиться

Я предлагаю увеличить размер HashMap, если equals () дорого (например, за счет уменьшения коэффициента загрузки). Таким образом у вас будет меньше коллизий, и, надеюсь, if (o == this) return true будет соответствовать наиболее часто.

0
ответ дан 18 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: