2012-03-12 23 views
3

我有一個哈希表像Java哈希表的問題,使用對象REFFERENCE

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

現在,我實現它像,整數FOO =整數(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的方式重複存儲相同的對象)。任何想法 ?提前致謝。

+0

如果你擔心空間,爲什麼你使用散列表而不是樹? – erickson 2012-03-12 03:23:45

+0

@erickson,因爲性能。 – Arpssss 2012-03-12 03:25:14

回答

1

Integer S中的空間效率最高的方法是使用Integer.valueOf(),它使用輕量級設計模式,以減少小的值的存儲器使用量。 -128和(通常)127之間的值不需要額外的內存。

+0

謝謝。這將有所幫助。然而,我真正想要的是一點點不同意味着不要爲同一個對象浪費更多空間。 – Arpssss 2012-03-12 03:34:46