Будьте в спящем режиме: лучший тип набора для использования - сумка, idbag, установил, перечисляет, карта

Это не точно ответ на Ваш вопрос, но в GHC на x86, quotRem на Интервале скомпилирует вниз в единственную машинную команду, тогда как divMod действительно вполне немного больше работает. Таким образом, если Вы находитесь в критическом по отношению к скорости разделе и работающий над положительными числами только, quotRem является способом пойти.

11
задан Nemi 9 October 2011 в 16:29
поделиться

3 ответа

Хорошо, через некоторое время я нашел причину НЕ использовать Set как тип коллекции. Из-за проблем с переопределениями hashcode / equals и сохранением спящего режима использование любых функций Java API, вызывающих hashcode / equals, является плохой идеей. Нет хорошего способа последовательно сравнивать объекты до и после сохранения. Придерживайтесь коллекций, которые не зависят от хэш-кода equals /, например bag .

Подробнее здесь:

http://community.jboss.org/wiki/EqualsandHashCode (эта ссылка звучит так, будто бизнес-ключ - это лучший способ, но прочтите следующую ссылку полностью, чтобы увидеть почему это не всегда хорошая идея)

https://forum.hibernate.org/viewtopic.php?f=1&t=928172 (прочтите все обсуждение, чтобы у вас закружилась голова)

{{ 1}}
9
ответ дан 3 December 2019 в 03:18
поделиться

Я предполагаю, что люди используют самые разные вещи :-) - разные типы коллекций служат разным целям, поэтому «лучший» зависит от того, для чего он вам нужен.

Тем не менее, использование List в коде обычно более удобно, чем использование Set , даже если упомянутый List неупорядочен. По крайней мере, '.get (0)' проще для глаз, чем .iterator (). Next () :-) Поддержка пакета Hibernate определенно подходит для этой цели, плюс вы даже можете добавить упорядочить по декларации (если применимо) и отсортировать список.

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

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

Я бы порекомендовал использовать набор, потому что набор определяется как набор уникальных элементов, и обычно это то, с чем вы имеете дело.

И .iterator (). Next () сохраняется, когда в вашей коллекции нет элемента.

.get (0) может вызвать исключение IndexOutOfBoundsException , если вы обращаетесь к пустому списку.

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

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