首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >给定哈希代码,检查一个集合是否包含一个对象。

给定哈希代码,检查一个集合是否包含一个对象。
EN

Stack Overflow用户
提问于 2014-07-08 07:19:41
回答 2查看 1K关注 0票数 1

我已经重写了equalshashCode,用于定制对象Foo。现在,我有了对象的哈希代码,并希望检查对象是否包含在Set<Foo> fooSet中。是否有更有效的方法来寻找它?

代码语言:javascript
代码运行次数:0
运行
复制
for(Foo o : fooSet) {
       if(o.hashCode == inputCode) {
          return true;
       }
 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-08 07:22:18

基本上,您无法根据哈希代码可靠地确定它。您可以检查一个值肯定不在集合中,但是即使您找到了一个匹配的哈希代码,但这并不意味着该值在集合中。这很少有用,这就是为什么Set中没有任何公开功能的原因。我不知道有什么更快的方法来达到这个半途而废。(请注意,如果您只是得到了一个Set而不是一个HashSet,那么内部数据结构中很可能没有任何东西记录了哈希代码.)

如果您真的只关心哈希代码的存在,只需存储一个Set<Integer>而不是完整的集合。但通常这样做并不十分有用。

票数 1
EN

Stack Overflow用户

发布于 2014-07-08 07:27:45

检查两个对象的哈希代码并不能保证对象是相等的,这意味着即使两个对象的哈希代码相等,对象也可能不在集合中。

我也不明白你想用更快的方式去做。如果您的意思是要避免循环和寻找备选方案,那么请使用Set的below()方法,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
fooSet.contains(inputObject);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24625884

复制
相关文章

相似问题

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