首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我需要一些关于hashmap用户类型的建议

我需要一些关于hashmap用户类型的建议
EN

Stack Overflow用户
提问于 2019-05-10 03:20:01
回答 1查看 44关注 0票数 -4

我写的用户类型如下

代码语言:javascript
复制
class Item {
   int first;
   int second;

   public boolean equals(Item p) {
       if(first == p.first && second == p.second ) 
           return true;
       else if(first == p.second && second == p.first)
           return true;
       else
           return false;
   }
   public int hashcode() {
       return Objects.hash(first, second);
   }
   public void set(Object first, Object second) {
       this.first = Integer.parseInt(first.toString());
       this.second = Integer.parseInt(second.toString());
   }

}

然而,它根本不起作用。我是不是设计了错误的重复测试?

EN

回答 1

Stack Overflow用户

发布于 2019-05-10 03:23:59

一些微妙的问题:

  • 等于的签名需要是public boolean equals(Object o) (所以,是的,你需要与Object进行比较,而不是你的直接类)
  • for hashcode,它应该是hashCode()。对于corse,ewuals()认为相等的两个对象需要具有相同的hashCode值。这是您的实现无法实现的。

这里真正的教训是:当你打算覆盖方法时,将@注解放在它上面,这样编译器就可以告诉你你搞砸了,是大是小。

在您的例子中,当您打算将您的类与任何java集合容器(如Map/HashMap )一起使用时,您需要将两个方法都弄错。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56066234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档