Проблема с хэш-таблицей Java со ссылкой на объект - PullRequest
3 голосов
/ 12 марта 2012

У меня есть хеш-таблица типа

HashTable ht = { (1, 1), (2, 1), (3, 1) }

Теперь я реализую ее как Integer foo = Integer (1) и объявляю хэш-таблицу как

HashTable ht = { (foo, foo), (2, foo), (3, foo) }
* 1006как я понял из this , , это уменьшит пространство кучи, используемое JVM.Это правильно? Другой момент заключается в том, что в Си я обычно использую структуру типа
HashTable ht = { (1, mem), (2, mem), (3, mem) } 
{ where mem is memory location (say 10) of 1 }

, а затем использую местоположение для доступа к значению.Теперь, если значение mem меньше Int (скажем, в байтах), я могу сэкономить место.Однако я не понимаю, как реализовать это в Java. Или есть какой-нибудь другой способ уменьшить пространство хеш-таблицы?(имеется в виду, уменьшая повторное хранение одного и того же объекта способом Java).

1 Ответ

1 голос
/ 12 марта 2012

Наиболее эффективный способ использования Integer s - это использование Integer.valueOf(), в котором используется шаблон проектирования с наименьшим весом для уменьшения использования памяти при малых значениях.Значения от -128 до (обычно) 127 не требуют дополнительной памяти.

...