我想在HashSet中处理一组类(MyClass)的对象。当我尝试添加一个已经存在的对象时(依赖于等于MyClass的hashCode ),该方法返回false。有没有一种方法/方法可以返回已经存在的实际对象?
请给我任何建议来处理对象的集合,当add返回false时,能够获得现有对象的返回吗?
发布于 2011-08-17 04:21:17
一种可能的方法是:
myClass[] myArray = mySet.toArray(new myClass[mySet.size]);
List myList = Arrays.asList(myArray);
MyClass myObject = myList.get(myList.indexof(myObject));但当然,正如一些人指出的那样,如果插入失败,那么该元素就是您要查找的元素,除非您想要存储在该内存位置中的内容,而不是equals和hashCode告诉您的内容,即,不是逻辑上相等的对象,而是==对象。
发布于 2011-08-17 04:18:07
只需检查哈希集是否包含您的对象:
if (hashSet.contains(obj)) {
doWhateverWith(obj);
}发布于 2011-08-17 04:18:29
除非对集合进行迭代,否则没有办法获得集合中的现有成员,该成员对刚添加的值是equal。要做到这一点,最好的方法是围绕HashMap编写一个集合包装器,将每个附加值映射到自身。
https://stackoverflow.com/questions/7084399
复制相似问题