对象引用的 Java 哈希表问题

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

最佳答案

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

关于对象引用的 Java 哈希表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661374/

相关文章:

c - 在 C 中加载或保存位图句柄 win32

java - 使用内部类编译时出错

java - 无法获取脚本文件 linux

Java 可选 - 对存储为 Nullable 对象属性的 Nullable 列表进行排序

c - SEM_UNDO - 它是如何工作的?

混淆使用 fork() 和 wait(),这也是最有效的方法吗?

PHP OOP,类里面的良好实践

javascript - 在 var x = function() 内重写 this.method = function()

java - ApexCharts Vue - 热图图表 - 缩放时间线

java - 如何编写生产就绪的单一消费者?