【问题标题】:Java Hash Table Issue with Object Reference对象引用的 Java 哈希表问题
【发布时间】:2012-03-28 12:23:35
【问题描述】:

我有一个类似的哈希表,

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 的方式重复存储相同的对象)。

【问题讨论】:

  • 如果您担心空间问题,为什么要使用哈希表而不是树?
  • @erickson,因为性能。
  • 请提供minimal reproducible example 来说明您的问题。

标签: java c oop hashmap hashtable


【解决方案1】:

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

【讨论】:

  • 谢谢。这会有所帮助。然而,我真正想要的是有点不同的意思是不要为同一个对象浪费更多的空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多