2012-04-10 119 views
0

好吧,我正在使用hashmap,使用我的一个类作为Key。HashMap密钥哈希码可能失败?

我的问题是:当我得到正确的项目一次,是否有可能在另一次得到一个坏项目?

我的意思是,我实现了一个散列码算法,我在这里查看另一个问题。 有时我得到正确的项目,另一次我没有得到它。

任何猜测?是否有可能找到一次,第二次找不到它? 我不会删除它!

非常感谢!

回答

3

当然不是,你需要一致性。如果使用相同的算法进行计算,则对于同一项目,散列值必须始终相同。

对您的问题的一个可能的答案是,您正在计算使用您的对象的一些内部值在第一次搜索和第二次搜索之间修改。

从两个值映射到同一个散列值的意义上说,你可能会碰到碰撞,但你不能有第一次工作的东西,而第二次不工作。

+0

当然,可能''hashCode()'函数已被(不正确)由OP写入。而且它也可以运行在可变类型上,特别是在可变字段上。 – 2012-04-10 22:38:09

+1

这是我想到的第一件事,我们会看看他是否给了我们更多的细节 – Jack 2012-04-10 22:39:12

+0

当我在hashMap上放置一个项目时,我使用:basicRoomContent.put(room [n] [j],si); room [n] [j]是我的Class Cell的一个矩阵对象,并且从哈希中获得一个项目我使用这个:basicRoomContent.containsKey(new Cell(x,y));和我的哈希码和等于方法是这样的:http://tinypaste.com/b78439dc 非常感谢您的帮助球员提前 – TiagoM 2012-04-10 22:45:54