相关疑难解决方法(0)

617
推荐指数
11
解决办法
57万
查看次数

为什么在添加HashSet和hashCode匹配时没有调用equals()?

当我运行此代码时,为什么只有hashCode()被调用not equalsmethod而我的hashCode()实现hashCode为两个条目生成相同的HashSet

import java.util.HashSet;

public class Test1 {
    public static void main(String[] args) {
        Student st=new Student(89);
        HashSet st1=new HashSet();
        st1.add(st);
        st1.add(st);
        System.out.println("Ho size="+st1.size());
    }
}
class Student{
    private int name;
    private int ID;
    public Student(int iD) {
        super();
        this.ID = iD;
    }
    @Override
    public int hashCode() {
        System.out.println("Hello-hashcode");
        return ID;
    }
    @Override
    public boolean equals(Object obj) {
        System.out.println("Hello-equals");
        if(obj instanceof Student){
            if(this.ID==((Student)obj).ID){
                return true;
            }
            else{
                return false;
            }
        } …
Run Code Online (Sandbox Code Playgroud)

java

31
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

equals ×1

hashcode ×1

overriding ×1