package test.kang;
import java.util.HashMap;
public class Test25 {
public static void main(String[] args) {
/*一般如果使用java中的Map对象进行存储时,他会自动调用hashCode方法来比较两个对象是否相等。
* 当Apples类不重写hashCode方法,输出dont have such a key
* 重写hashCode方法后,输出对象的内存地址
*/
HashMap hm = new HashMap();
Apples appple=new Apples("青苹果",5);
Apples appple2=new Apples("青苹果",5);
hm.put(appple.getName(),appple);
if(hm.containsValue(appple2))
System.out.println(hm.get(appple2.getName()));
else
System.out.println("dont have such a key");
}
}
class Apples{
private String name;
private int num;
public Apples(){
}
public Apples(String name,int a){
this.name=name;
this.num=num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + num;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Apples other = (Apples) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (num != other.num)
return false;
return true;
}
}
java中equal和hashCode方法
最新推荐文章于 2022-08-30 22:23:19 发布