Это хорошая практика для индексирования списка объектов с помощью хэш-карты? - PullRequest
3 голосов
/ 02 октября 2011

Мне нужно найти объекты по атрибуту.

Один из вариантов - перебирать массив объектов и проверять каждый объект, которому соответствует атрибут.

Другой вариант - поместить объекты в хэш-карту с атрибутом в качестве ключа. Тогда можно просто получить объект по атрибуту.

Является ли второй вариант хорошей практикой, несмотря на то, что вы дублируете данные атрибута?

Примечание: атрибут считается уникальным

Ответы [ 2 ]

6 голосов
/ 02 октября 2011

ДА! Из того, что вы дали, как правило, всегда лучше использовать карту. Нахождение значения на карте (где ключ имеет хорошую хэш-функцию) составляет O (1) . Поиск элемента в массиве или списке: O (n) .

1 голос
/ 02 октября 2011

Если атрибут уникален, и есть много объектов для поиска, или вам нужно много их искать, обязательно - создайте индекс. Это часто компромисс - память за скорость.

OTOH, если не так много объектов или вы не делаете это много, это может не иметь значения в любом случае.

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