本帖最后由 也许依然 于 2014-3-8 20:40 编辑
HashSet底层的数据结构是哈希表,在查找时,理想的情况是不经过任何比较,一次存取便能得到所查的记录,那就必须在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使没个关键字和结构中一个唯一的存储位置相对应,这个对应关系f就是哈希函数。
在建立对象时会根据特定的哈希函数和数据的存储地址算出一个值,即hashcode
如果没有重写hashCode方法,在HashSet中存储自定义元素时,建立多个对象,可能将相同的元素存储进去,因为不同对象对应的哈希值是不同的
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。这一般是通过将该对象的内部地址转换成一个整数来实现的 |