为了账号安全,请及时绑定邮箱和手机立即绑定

Java中Map.containsKey的问题

Java中Map.containsKey的问题

一只萌萌小番薯 2019-03-21 18:19:12
我自己实现了一个类class Method{String className,methodName;Vector parameterTypes;}并把Method作为键值,写了一个Map然后我在遍历输出这个Map的所有Key时候,能够输出我想要的那个对象a的内容,可是我写Map.containsKey(a)的时候,它却返回了false。我尝试过自己改写Object.equals方法,但还是没用。改写的equals方法如下:public boolean equals(Object anotherMethod){     if(!(anotherMethod instanceof Method))         return false;     Method another = (Method)anotherMethod;     if(! this.className.equals(another.className))         return false;     if(! this.methodName.equals(another.methodName))         return false;     if(this.parameterTypes == null && another.parameterTypes != null)         return false;     if(this.parameterTypes != null && another.parameterTypes == null)         return false;     if(this.parameterTypes.size() != another.parameterTypes.size())         return false;     for(int i=0; i<this.parameterTypes.size(); i++){         if(!this.parameterTypes.elementAt(i).equals(another.parameterTypes.elementAt(i)))             return false;     }     return true; }另外,我尝试了如下代码:methodMap.put(method, methodList.size());//methodList.size()是一个int System.out.println(methodMap.containsKey(method));//输出true System.out.println(methodMap.containsKey(new Method(method)));//输出false System.out.println(method.equals(new Method(method)));//输出true请问这是什么原因,应该如何解决?
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

解决了,用hashmap的时候应该重写hashCode方法。


查看完整回答
反对 回复 2019-05-06

添加回答

代码语言

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信