Hash Multi-Map Проблема экономии пространства - PullRequest
3 голосов
/ 24 марта 2012

Я использую HashMultiMap в моем коде. Теперь мой код периодически получает несколько битов. Который я храню в строке (например, String str = "0110011100"). А затем преобразовать его в int и сохранить как мой ключ / значение HashMultiMap. Можно ли сохранить его в виде битов вместо того, чтобы хранить его как int / string? Это экономит место на карте? На самом деле строка содержит больше битов, чем байтов, и меньше, чем int (например, 14 битов). Итак, я хочу сэкономить место, сохраняя его в виде битов. Спасибо.

1 Ответ

5 голосов
/ 24 марта 2012

Java имеет удобный класс BitSet, который может хранить практически неограниченное количество битов.Когда число битов велико, это представление имеет смысл.Однако, когда число битов относительно мало, это представление будет использовать больше места, чем целое число.

Если количество битов ограничено 32, использование BitSet будет бесполезным.Имея всего 20 битов, вы потенциально можете создать массив из 2^20 наборов и избежать полного хранения ключей.Но это считается преждевременной оптимизацией.

Лучший способ решить эту проблему - начать с наиболее удобного для вас представления, , которое логически соответствует дизайну вашего приложения .Когда приложение работает, профилируйте его использование памяти, чтобы определить, нужно ли оптимизировать представление ваших битовых наборов;скорее всего, вам не нужно будет ничего с этим делать, по крайней мере, не сразу.

...