小编Gle*_*zex的帖子

Java HashMap包含奇怪的行为

试图实现简单的任务陷入奇怪的问题:

class User{
    String login;
    String pwrd;
    User(String lg,String pw){
        this.login=lg;
        this.pwrd=pw;
    }
    public String toString(){
        return this.login;
    }
    public boolean equals(String a){
        return this.login.equals(a);
    }
    public boolean equals(User t){
        return this.login.equals(t.toString());
    }
}

public class Foo{
    public static void main (String[] args)
    {
        HashMap<User,Boolean> a=new HashMap<>();
        User a1=new User("asd","123"),a2=new User("asd","134");
        a.put(a1,false);
        a.put(a2,false);
        System.out.println(a.containsKey(a2));
        System.out.println(a.containsKey("asd"));
    }
}
Run Code Online (Sandbox Code Playgroud)

结果我希望两个containsKey检查都是真的.进一步在代码中它将被越来越多地使用.所以首先要理解为什么它表现如此,如果可能的话修复它.任何帮助赞赏.

java equals hashmap

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

标签 统计

equals ×1

hashmap ×1

java ×1