gpt4 book ai didi

java - HashMap...这里获取 null,我必须重载 hashcode() 以便我各自的对象

转载 作者:行者123 更新时间:2023-12-02 04:30:18 24 4
gpt4 key购买 nike

    class Student2{
int age;
String name;

Student2(int age,String name)
{
this.age=age;
this.name=name;
}

/*
public int hashCode(){
return age;
}
*/

public boolean equals(Object o){
Student2 s2=(Student2)o;
return (this.age==s2.age && this.name==s2.name);
}


}

public class HashMapDemo{




public static void main(String a[])
{ Map m=new HashMap();
m.put(new Student2(10,"sameer"), 1);
m.put(new Student2(11,"pagal"), 2);
m.put(new Student2(12,"ullu"), 3);
m.put(new Student2(13,"lullu"), 5);

System.out.println(m.get(new Student2(11,"pagal")));


}


}

HashMap...这里获取 null,我必须重载 hashcode() 以便我各自的对象。我要在 hashCode 中添加什么。我的疑问是在 hashCode 方法中是否必须重写 hashCode 方法。

最佳答案

如果你想使用你的类作为键,你需要 hashCode 和 equals 方法。让您的 IDE 生成或使用:

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ( ( name == null ) ? 0 : name.hashCode() );
return result;
}
@Override
public boolean equals( Object obj ) {
if( this == obj )
return true;
if( obj == null )
return false;
if( getClass() != obj.getClass() )
return false;
Student2 other = (Student2) obj;
if( age != other.age )
return false;
if( name == null ) {
if( other.name != null )
return false;
} else if( !name.equals( other.name ) )
return false;
return true;
}

关于java - HashMap...这里获取 null,我必须重载 hashcode() 以便我各自的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31161800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com