Все в порядке. В качестве альтернативы вы можете использовать HashSet .
EDIT:
Вы можете сравнивать объекты двумя способами:
- По ссылке
- Custom
Сравнение Object
по умолчанию выполняется по ссылке и реализовано в классе Object
.
Если какой-либо класс в иерархии вашего объекта переопределяет эту реализацию по умолчанию, тогда вы выполняете пользовательское сравнение. Если это произойдет, вы также должны переопределить hashcode
.
Учитывая это, ЕСЛИ вы хотите сравнивать объекты по ссылке, но есть пользовательская реализация равенства, тогда вам следует использовать IdentityHashMap ELSE
используйте HashSet
.
Если вы хотите сохранить текущую реализацию с HashMap
, это тоже хорошо. HashSet внутренне реализован с помощью HashMap. Но вместо того, чтобы установить значение в 1, установите его с помощью null
.
Существует также вопрос о правильной структуре данных . Вы можете использовать List
вместо Hash структуры. Тип структуры данных, которую вы должны использовать, зависит от вас. Это зависит от того, как многие думают, например, сколько объектов вы собираетесь поместить в коллекцию, сколько будет доступа, вставок и т. Д.