繁体   English   中英

HashSet类对象。 什么是哈希?

[英]HashSet of class objects. What is hashed?

我注意到在Java中,您可以创建一个包含偶数对象的HashSet。 例如,您可以创建一个包含int,double和array作为变量的类(例如class1),然后可以说-

HashSet<class1> = new HashSet<>();

显然,在整数的HashSet中,必须使用将整数作为输入并告诉该函数将其存储在哪个存储桶中的哈希函数。但是对于此class1变量,到底是什么哈希呢? 存在三个不同的字段(可能都不是原语)。

设置和映射使用的“哈希函数”是hashCode() 除非您显式重写hashCode() ,否则将使用Object定义的实现。 即,将产生仅基于引用而不完全不基于字段的哈希。

从上面的链接:

在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。 (通常通过将对象的内部地址转换为整数来实现,但是Java TM编程语言不需要此实现技术。)

对于给定的类,JVM中只有一个类对象。

根据对象中的实现,类对象的哈希码是“识别哈希”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM