(==)在hashCode方面的功能

Nav*_*Ali 0 java string hashmap key-value bucket

String s1 ="abc";

String s2 = new String("abc");

当我们比较两者时

S1 S2 ==; 它返回false

当我们将它与s1.hashCode()== s2.hashCode进行比较时,它返回true

我知道(==)检查引用id的.它在上面的比较中返回true,因为上面的hashCode被保存到同一个桶里?请给我解释

Bri*_*new 7

不要忘记你的哈希码是原始整数,并且使用比较原语==将比较它们的,而不是它们的引用(因为原语没有引用)

因此,具有相同内容的两个字符串将产生相同的哈希码,并且比较通过==是完全有效的.

只有将对象放入散列集合(例如a HashSet)时,存储桶的概念才有效.哈希码的值决定了对象进入哪个桶.不存储哈希码本身.