首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java集合-> Hashset

Java集合-> Hashset
EN

Stack Overflow用户
提问于 2011-08-17 04:14:10
回答 7查看 288关注 0票数 1

我想在HashSet中处理一组类(MyClass)的对象。当我尝试添加一个已经存在的对象时(依赖于等于MyClass的hashCode ),该方法返回false。有没有一种方法/方法可以返回已经存在的实际对象?

请给我任何建议来处理对象的集合,当add返回false时,能够获得现有对象的返回吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-17 04:21:17

一种可能的方法是:

代码语言:javascript
复制
myClass[] myArray = mySet.toArray(new myClass[mySet.size]);
List myList = Arrays.asList(myArray);
MyClass myObject = myList.get(myList.indexof(myObject));

但当然,正如一些人指出的那样,如果插入失败,那么该元素就是您要查找的元素,除非您想要存储在该内存位置中的内容,而不是equalshashCode告诉您的内容,即,不是逻辑上相等的对象,而是==对象。

票数 0
EN

Stack Overflow用户

发布于 2011-08-17 04:18:07

只需检查哈希集是否包含您的对象:

代码语言:javascript
复制
if (hashSet.contains(obj)) {
 doWhateverWith(obj);
}
票数 4
EN

Stack Overflow用户

发布于 2011-08-17 04:18:29

除非对集合进行迭代,否则没有办法获得集合中的现有成员,该成员对刚添加的值是equal。要做到这一点,最好的方法是围绕HashMap编写一个集合包装器,将每个附加值映射到自身。

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

https://stackoverflow.com/questions/7084399

复制
相关文章

相似问题

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