我对确切调用HashCode和equals方法感到困惑。 例如
答案 0 :(得分:4)
总是调用hashCode()。需要这样才能找到要放入条目的存储桶。
如果同一个存储桶中有一个密钥,则会调用equals(),例如如果键是相同的。但是,如果某些哈希映射与实例完全相同,则可能不会调用equals。
注意:如果您的地图是有序地图,例如TreeMap,则不会调用hashCode或equals。 TreeMap和ConcurrentSkipListMap使用compareTo方法或提供的Comparable
来确定密钥在树中的放置位置。
答案 1 :(得分:0)
hashcode()是一个生成唯一代码来查找存储桶的函数(它就像数组中的索引一样)。如果你想对对象相等做出不同的定义,那么你可以覆盖equals()。