为Claude Code配置Taotoken密钥与聚合地址解决访问难题
2026/5/9 11:58:31
📌专栏:大白话说Java面试题 — 01-Java基础篇
hashCode()相同,则equals()是否也一定为 true?📚回答:
hashCode()和equals()是两个重要的方法,它们之间的关系遵循以下规则:equals()方法比较为true,那么它们的hashCode()必须相等。hashCode()相同,它们通过equals()比较的结果不一定为true。哈希冲突:
hashCode()的返回值是一个整数,而整数的范围是有限的(32位)。因此,在大量对象中,可能会出现不同的对象生成相同的hashCode()值,这就是哈希冲突。hashCode()相同,它们的内容(由equals()定义)可能完全不同。规范要求:
equals()比较为true,它们的hashCode()必须一致;但反之则不一定成立。💡代码示例:
以下代码展示了hashCode()相同但equals()不同的情况:
classPerson{privateStringname;publicPerson(Stringname){this.name=name;}@OverridepublicinthashCode(){return1;// 强制所有对象返回相同的哈希值}@Overridepublicbooleanequals(Objectobj){if(this==obj)returntrue;if(obj==null||getClass()!=obj.getClass())returnfalse;Personperson=(Person)obj;returnname.equals(person.name);}}publicclassMain{publicstaticvoidmain(String[]args){Personp1=newPerson("Alice");Personp2=newPerson("Bob");System.out.println(p1.hashCode()==p2.hashCode());// 输出 trueSystem.out.println(p1.equals(p2));// 输出 false}}💡面试官视角:
hashCode()和equals()?”答:为了保证集合类(如HashMap、HashSet)的正确性,避免因为哈希冲突导致数据存储或查找失败。hashCode()和equals()?”答:可以使用 IDE 自动生成工具,或者手动基于对象的关键属性实现一致性逻辑。