在java的特定内存中存储hashmap

在java的特定内存中存储hashmap,java,hashmap,heap-memory,Java,Hashmap,Heap Memory,有没有办法将HashMap存储在特定的内存位置或特定的内存区域内,比如说内存地址从0到100 根据我的理解,修改hashCode函数是可能的。任何人都可以共享相同的代码吗?hashCode的目的只是作为运行代码的VM中不同java对象的唯一id。它不会影响对象在VM使用的虚拟内存中的位置。它以另一种方式工作,至少在对象的方法实现中,hashCode会为您获取一个整数,该整数描述对象在该虚拟内存中的地址 如果你想改变它,你应该遵循这些准则。我认为Java文档的解释可以让事情变得清楚: hashCo

有没有办法将HashMap存储在特定的内存位置或特定的内存区域内,比如说内存地址从0到100

根据我的理解,修改hashCode函数是可能的。任何人都可以共享相同的代码吗?

hashCode的目的只是作为运行代码的VM中不同java对象的唯一id。它不会影响对象在VM使用的虚拟内存中的位置。它以另一种方式工作,至少在对象的方法实现中,hashCode会为您获取一个整数,该整数描述对象在该虚拟内存中的地址

如果你想改变它,你应该遵循这些准则。我认为Java文档的解释可以让事情变得清楚:

hashCode的总合同为:

当在一个过程中对同一对象多次调用时 在执行Java应用程序时,hashCode方法必须一致 如果在equals中未使用任何信息,则返回相同的整数 修改对象上的比较。这个整数不需要保留 从应用程序的一次执行到另一次执行的一致性 同样的应用

如果两个对象根据 方法,然后在每个 两个对象必须产生相同的整数结果。

如果两个对象根据 equalsjava.lang.Object方法,然后在 这两个对象中的每一个都必须产生不同的整数结果。 但是,程序员应该知道,生成不同的 不相等对象的整数结果可能会提高 哈希表

类对象定义的hashCode方法确实为不同的对象返回不同的整数

下面是实现部分:

这通常是通过将对象的内部地址转换为整数来实现的,但是JavaTM编程语言不需要这种实现技术

编辑:

在HashMap的情况下,hashCode方法继承自AbstractMap,并按照以下说明工作:

返回此映射的哈希代码值。映射的哈希代码是 定义为映射中每个条目的哈希代码之和 入口集视图。这确保m1.equalsm2意味着 m1.hashCode==m2.hashCode,根据需要用于任意两个映射m1和m2 根据Object.hashCode的总合同

如你所见,它遵循上述合同


希望这有帮助

如果你所说的内存是指堆,那么答案很简单:你为什么要这样做?@Aniket你明白解释了吗?