Я сделал некоторое профилирование по моему приложению, и один из результатов показал, что около 18% памяти в куче используется объектами типа Double
. Оказывается, эти объекты являются значениями в Map
s, где я не могу использовать примитивный тип.
Мое рассуждение состоит в том, что примитивный тип Double
потребляет меньше памяти, чем объект Double
. Есть ли способ иметь такую карту, как структура данных, которая принимала бы любой тип в качестве ключа и примитивный Double
как значения?
Основные операции:
- (возможно, только один раз)
- Поиск (содержит ключ)
- Повторное (по ключу)
- Итерация
Типичные карты, которые у меня есть:
-
HashMap<T, HashMap<NodeData<T>, Double>> graph
-
HashMap<Point2D, Boolean> onSea
(хотя и не двойное значение) -
ConcurrentHashMap<Point2D, HashMap<Point2D, Double>>
Все, что используется с Java 8.
Добавление
Меня в основном не интересуют рамки, которые имеют решение для этих типов карт, но на то, что нужно учитывать при решении этих проблем. Если хотите, каковы концепции/идеи/подходы к любой такой структуре. Или решение может быть также на другом уровне, где карты заменяются объектами, следуя определенному шаблону, подобному @Ilmari Karonen, указанному в его ответе.