带有对象引用的Java哈希表问题

时间:2012-03-12 03:21:49

标签: java c oop hashmap hashtable

我有一个哈希表,

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

现在,我实现它,如Integer foo = Integer(1)并声明哈希表,如,

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

现在,根据我从this理解,它将减少JVM使用的堆空间。这是正确的吗?另一点是,在C中,我通常使用像

这样的结构
HashTable ht = { (1, mem), (2, mem), (3, mem) } 
{ where mem is memory location (say 10) of 1 }

然后使用该位置访问该值。现在,如果mem值小于Int(比如Byte),我可以节省空间。但是,我不明白如何在Java中实现它。 或者还有其他方法可以减少哈希表的空间吗? (意味着通过减少以Java的方式重复存储相同的对象)。有什么想法吗?提前致谢。

1 个答案:

答案 0 :(得分:1)

使用Integer的最节省空间的方法是使用Integer.valueOf(),它使用flyweight设计模式来减少小值的内存使用量。介于-128和(通常)127之间的值不需要额外的内存。