首页 > 代码库 > 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
1.网上面试题
这是一道Java面试题,看了很多答案都说不对,可以看以下代码,就知道结果了
http://www.iteye.com/topic/485046第45题 答案是错误的
package com.test; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Test x=new Test("x"); Test y=new Test("y"); System.out.println("x HashCode="+x.hashCode()); System.out.println("y HashCode="+y.hashCode()); System.out.println(x.equals(y)==true); } } class Test{ private String name; public Test(String name){ this.name=name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { return true; } }
2.结果
x HashCode=151 y HashCode=152 true
所以这个面试题是可以的
两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。