在Java中存储在特定内存中的hashmap



是否有任何方法可以将hashmap存储在特定的内存位置或特定的内存区域(假设0到100的内存地址)。

根据我的理解,可以通过修改HashCode()函数来进行。谁能以相同的方式共享代码?

hashCode()的目的只是成为代码正在运行的VM中 dintiment java对象的唯一ID。它确实不是会影响对象在VM使用的 Virtual 内存中的位置。它以另一种方式工作,至少在Object的实现方法中,hashCode()为您提供了一个整数在此虚拟内存中描述对象的地址。

如果要更改它,则应遵循这些准则。我认为Java文档的这种解释可以使事情很清楚:

HashCode的一般合同是:

  • 每当在同一对象上调用它在同一对象上多次调用 执行Java应用程序,HashCode方法必须始终如一 返回相同的整数,没有提供等于 修改对象上的比较。这个整数不必保留 从一个执行应用程序到另一个执行 同一应用。

  • 如果两个对象相等 等于(对象)方法,然后在每个的每个 两个对象必须产生相同的整数结果。 。

  • 不需要,如果两个对象不平等 equals(java.lang.object)方法,然后在上调用HashCode方法 两个对象中的每个对象都必须产生不同的整数结果。 但是,程序员应意识到,产生独特的 整数结果不平等物体可能会提高性能 哈希表。

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

这是实施部分:

(这通常由实现,将对象的内部地址转换为整数,但是此实现技术是不需要由Javatm编程语言进行的。)/blockquote>

编辑:

在hashmap的情况下, hashCode()方法是从 AbstractMap继承的,并如Java文档中所述工作:

返回此地图的哈希代码值。地图的哈希码为 定义为地图中每个条目的哈希码的总和 entrySet()视图。这确保了M1.Equals(M2)意味着 m1.hashcode()== m2.hashcode()对于任何两个地图m1和m2,,根据需要 通过object.hashcode()的一般合同。

您可以看到它遵循上述合同

希望这有帮助