我有关于java equals和hashcode的声明。这个声明对重写hashcode和equals有什么意义?
如果我们用这样一个Integer对象HashMap中的关键,我们将不能够可靠地检索相关值
这是什么意思?为什么它说'不可靠'?我写了一个测试程序,它总是有效的。
public class Test1 {
public static void main(String[] args){
Map<Integer, Student> map = new HashMap<Integer, Student>();
map.put(1, new Student("john"));
map.put(2, new Student("peter"));
Student s1 = map.get(1);
Student s2 = map.get(1);
Student s3 = map.get(2);
System.out.println("s1:"+s1+" s2:"+s2+" s3:"+s3);
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s1.equals(s3));
System.out.println(s1.equals(s2));
}
}
class Student{
private String name;
public Student(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
您需要引用更多 – hvgotcodes 2012-01-13 15:17:33
这样一个Integer对象吗?哪一个??? – edutesoy 2012-01-13 15:18:24
这个陈述来自哪里?什么是完整的上下文? – weekens 2012-01-13 15:18:41