即使我重写equals(Object o),HashSet也不包含我的自定义对象

use*_*358 2 java

为什么这个程序的输出false?我期待truen对象初始化与我检查的相同的字符串.

public class Test {
    public static void main(String[] args) {
        Name n = new Name("jyoti", "meher");
        Set<Name> s = new HashSet();
        s.add(n);
        System.out.println(s.contains(new Name("jyoti", "meher")));
    }
}

class Name {
    String name, title;

    public Name(String name, String title) {
        this.name = name;
        this.title = title;
    }

    public boolean equals(Object o) {
        if (!(o instanceof Name)) {

            return false;
        }
        Name n = (Name) o;
        return n.name.equals(name) && n.title.equals(title);
    }
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*gut 11

你也必须覆盖hashCode(),而不仅仅是equals().