所以我有这种将对象添加到显示的方法。当第一次打开显示器时,所有现有的对象都将被加入到HashMap 1中。然后,用户可以添加更多,每次1个,将一个新对象放入HashMap中。Java Hash Map containsKey在返回true时不会返回true
Key是Object,Value是一个自定义类,它包含Object和其他一些关于它的变量。
这一切都可以正常工作,但是当显示屏关闭并打开一个新实例时,它应该重新加载所有对象(包括用户在创建和保存期间使用的对象),但出于某种原因新创建的人在使用containsKey时发现不正确的匹配。
我不明白为什么它找不到匹配。当我做的containsValue它没有发现任何不正确的匹配(它的工作原理应该),但它没有帮助,因为当我使用HashMap.put(K,V)它覆盖了它将返回containsKey的误报。
所有代码都会遍历每个对象,检查HashMap是否已经包含密钥,如果是,则返回该密钥的值,否则会根据传入该方法的密钥创建一个值,并将其放入进入散列表。
对不起,我不能发布代码,所以如果你不能没有它的帮助我明白,但它的工作,我不知道是否可以发布的代码,即使它只是一个片段。
任何帮助或指导,将不胜感激,我仍然在谷歌搜索,看看我能否找到任何信息。
编辑:我找到了解决方案。散列码函数返回一个基本上是索引的值。问题是它在初始对象之后被重置,所以新添加的将从零开始覆盖现有对象。我修改了哈希码及其工作。
感谢大家的帮助。
如果是为了工作,那么不要发布实际的代码,但你可以写一个小的代码片段,展示你实际上在做什么。 –
我发布了一个我认为是重要组成部分的修改代码片段。 – user1855475
@ user18554575 ..你的'node.getUserObject'返回了什么? –