Работают ли коллекции, которые препятствуют вставке дублирующих элементов, медленнее? - PullRequest
2 голосов
/ 22 июня 2011

Работают ли коллекции, которые препятствуют вставке дублирующих элементов, медленнее (чем не проверяющие), так как я предполагаю, что они реализуют какую-то проверку каждого элемента в пределах от дублирования?

Или это не правильно или терпимо в большинстве случаев?

Спасибо

Ответы [ 2 ]

8 голосов
/ 22 июня 2011

Конечно, это зависит от реализации, но большинство наборов, скорее всего, будут оптимизированы в той или иной форме для быстрой проверки на герметичность.Например, HashSet<T> - это, по сути, хэш-таблица значений, так что это просто поиск по хешу.

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

1 голос
/ 22 июня 2011

Это полностью зависит от реализации коллекции, которую вы используете - если она основана на Списке , будет снижение производительности.

Однако, если используется HashSet , производительность будет почти такой же.

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

...