Java在Hashmap中找不到特定的键

Java在Hashmap中找不到特定的键,java,Java,我想知道我的Hashmap中是否已经有一个键,但它不起作用 我的main方法代码 当我运行代码时,它返回Fail。如何解决这个问题,我将使用泛型和hashmap作为我的图形数据结构。您的映射键类型是FamilyMember,因此它不会找到字符串“ac”的搜索 如果要将键设置为FamilyMember对象,则需要重写FamilyMember类中的hashCode和equals。在HashMap中搜索项目时,需要提供FamilyMember对象的实例,该对象具有相同的hashCode,并为重写的eq

我想知道我的Hashmap中是否已经有一个键,但它不起作用 我的main方法代码

当我运行代码时,它返回Fail。如何解决这个问题,我将使用泛型和hashmap作为我的图形数据结构。

您的映射键类型是FamilyMember,因此它不会找到字符串“ac”的搜索

如果要将键设置为FamilyMember对象,则需要重写FamilyMember类中的hashCode和equals。在HashMap中搜索项目时,需要提供FamilyMember对象的实例,该对象具有相同的hashCode,并为重写的equals方法返回true

在你的情况下,它可以简单到


    @Override
    public int hashCode() {
        return firstName.hashCode();
    }
        
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null) return false;
        if (this.getClass() != o.getClass()) return false;
        FamilyMember fm = (FamilyMember) o;
        return firstName == fm.firstName\;
    }

如果您希望能够通过字符串查找LinkedList,则需要将HashMap设置为HashMap

键是FamilyMeber对象,而不是字符串Ac。因此,FamilyMeber对象需要实现equals。。。方法。hashmap的键是FamilyMember类型,但在containsKey中传递的是String对象。
package Graph;

public class FamilyMember {
    public String firstName;


    public FamilyMember(String fname){
        this.firstName = fname;
    }


    @Override
    public String toString() {
        return firstName;
    }
}

    @Override
    public int hashCode() {
        return firstName.hashCode();
    }
        
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null) return false;
        if (this.getClass() != o.getClass()) return false;
        FamilyMember fm = (FamilyMember) o;
        return firstName == fm.firstName\;
    }