У меня есть число координатных пространств, составляющих 65 536 на 65 536 и заполненных многими объектами, где ни один из них не может использовать одни и те же координаты. Учитывая это, я могу гарантировать уникальный хеш для каждого объекта, объединив два шорта, которые делают координаты в int, что делает хеш.Какую HashMap-подобную коллекцию я должен использовать для этого случая?
Чтобы сохранить ссылки на эти объекты, я в настоящее время использую HashMap с настраиваемым неизменным классом Point в качестве ключа. Однако, так как я начинаю использовать множество этих координатных пространств сразу, я начал искать способы обрезать использование памяти.
Мое понимание того, как работает HashMap в Java является основным, но учитывая, что я могу гарантировать, уникальный хэш для каждого объекта, кажется, я мог бы использовать гораздо более памяти эффективную версию, которая:
- Безразлично» т использование ведер, которые могут содержать несколько объектов
- можно ставить и получить объекты, используя хэш вместо того, чтобы использовать ключ
существует ли такая HashMap, как коллекция?
Редактировать: Координатные пространства разрежены, работают примерно с 2000-3000 объектов на.
Вы можете использовать 2D массив вместо ... – Rich
Ну, по крайней мере, я хотел бы использовать один массив, так как я не хочу/нужно 65.536 дополнительные массивы массивов (массив 2d на самом деле представляет собой массив массивов) ... но даже это оставляет слишком много места в памяти, поскольку у меня на самом деле имеется 2000-3000 объектов на одно пространство координат, а массив резервирует память для 4 294 967 296 ссылок – Numeron
@Numeron - обратитесь к этой [дискуссии о разреженных матрицах] (http://stackoverflow.com/questions/390181/sparse-matrices-arrays-in-java). Поскольку эффективность памяти важна для вас, это может быть способ продвижения вашего проекта. – Perception