Я использую LinkedHashMap<Integer, Integer>
для хранения значений слоев на плитке в 2D-игре. Более низкие числа рисуются над более низкими числами.Эффективная альтернатива Map <Integer, Integer> в Java, в отношении автобоксинга?
В моей функции рисования я перебираю заданное значение и рисую каждый. Это означает, что я unboxing значения (width * height * numLayers)
раз. Я планирую порт для Android, поэтому я хочу быть максимально эффективным, и я думаю, что это слишком много?
Причина, по которой я использую карту, состоит в том, что номер слоя (ключ) имеет значение: клавиши выше 4 нарисованы над игроками и т. Д. Поэтому мне часто нужно пропустить кучу ключей.
Возможно, я просто использовал int[10]
, так как мне не понадобится много слоев, но тогда все неиспользуемые слои будут занимать 32 бита по сравнению с моим текущим HashMap, который может иметь ключи 0, 9 и занимает всего 64 бит.
* Unboxing * очень эффективен - все, что он делает, это получить номер из объекта. Он не создает новый объект или что-то еще. У вас есть доказательства того, что это на самом деле вызывает у вас проблемы? –
Я тоже занимаюсь большим количеством бокса, так как я хранил куски 2000 плиток, загружаемых в любой момент времени. Это скорее проблема памяти, чем проблема с производительностью. – Audiocrow