请解释以下声明:
hashCode
集合类使用java.util.HashSet
方法将该集合中的元素分组到散列桶中以便快速检索。
提及哈希桶和检索意味着HashSet
与哈希映射有一定的关系,因为HashSet
interface只暴露add
,remove
和{{1}方法,没有contains
方法。
Hash Set是否在内部使用哈希码和哈希桶?或者它是否以某种方式使用哈希地图?
答案 0 :(得分:1)
在SCJP Certification中有关hashcode
方法的问题:
问:20关于hashCode方法,哪两个陈述是正确的? (选择两项。)
一个。可以使用给定类的
hashCode
方法进行测试 该类的对象平等和对象不等。B中。
hashCode
方法使用java.util.SortedSet
方法 集合类,用于对该集合中的元素进行排序。℃。可以使用给定类的
hashCode
方法进行测试 该类的对象不等式,但不是对象相等。d。 a返回的值的唯一重要特征
hashCode
方法是值的分布必须遵循a 高斯分布。电子。 hashCode方法由
java.util.HashSet
集合使用 用于将该集合中的元素分组为散列桶的类 快速检索。答案:C,E
说明:(此解释取自here)
如果根据
equals(Object)
方法两个对象相等,那么 在两个对象中的每一个上调用hashCode()
方法必须生成 相同的整数结果。如果有两个对象,则 NOT 是必需的 根据{{1}}方法不相等,然后调用 两个对象中的每一个上的equals(java.lang.Object)
方法必须产生不同的 整数结果。但是,程序员应该意识到这一点 为不相等的对象产生不同的整数结果可以改善 哈希表的表现。
答案 1 :(得分:0)
您添加到HashSet
的值实际上设置为底层 keys
的{{1}}。 HashMap
在引擎盖下使用HashSet
。因此,HashMap
也应该有HashMap
的行为。