回答
hashCode()
不是唯一的(即不同的对象可以具有相同的hashCode,即使是相同类型的不同对象也可以具有相同的hashCode
),所以不可能实现这样的方法。
当你创建你的对象时,你可以做的最好的事情就是把它们放到一个大的HashMap<Integer,Object>
中,它将哈希代码映射到实例。这样,你可以稍后检索它们。
两个主要问题,虽然:
- 因为散列码不能保证是独一无二的,你会找回东西用正确的散列码,但不一定是事情,你正期待。您需要对所有代码进行编码,以便散列码具有很高的唯一性(当只有32位可用时,这很难实现)。
- 你的垃圾回收器在这里会遇到一个很大的问题,除非你在完成它们之后从哈希映射中删除对象。通常情况下,垃圾回收器会清除任何没有任何引用的实例,但在您的情况下,的所有内容都将在哈希映射中保留引用。欢迎来到亚利桑那州的记忆泄漏城市。
你可以尝试WeakHashMap
缓解第二个问题,尽管这可能会导致更多的问题:当您尝试一个对象后进行检索,它可能已经消失了......
如果hasCode()使用整数,为什么要输入'long'?不应该是'Map
很多关于“长”与“int”的比较。我不知道是否值得存储集合......它取决于应用程序,以及是否值得检索*全部*匹配而不仅仅是*任何*匹配。尽管如此,我已经按照您的建议编辑了我的答案。 – 2014-09-06 13:21:04
- 1. 有没有办法通过哈希来初始化一个对象?
- 2. 有没有办法通过响应
- 3. 有没有办法通过PHP
- 4. 有没有办法通过硒IDE
- 5. Android Sha1哈希用户名和密码没有正确哈希
- 6. 有没有办法通过PHP页面修改node.js代码?
- 7. 有没有办法通过代码与OneNote对话?
- 8. 有没有办法猜测哪个算法被用来生成哈希键?
- 9. 没有哈希的主干?
- 10. VS2005:当通过C#代码跨步,有没有办法跳过代码段?
- 11. 哈希表数组没有被转换为JSON通过ConvertTo-Json
- 12. 的Perl CGI没有通过哈希到MySQL
- 13. 有没有办法从maven构建中获得一致的MD5哈希?
- 14. 有没有办法确定给定AWS dynamodb表的哈希键属性?
- 15. 通过在C哈希码位运算
- 16. 通过iphone访问mysql密码()哈希
- 17. 有没有办法通过http代码过滤记录的elmah条目?
- 18. 有没有办法跳过jQuery/Backbone/Underscore的代码,当调试通过JS?
- 19. 有没有办法通过git checkout使用通配符?
- 20. 有没有办法通过值列表来过滤Salesforce报表?
- 21. 有没有内置函数来在.NET中哈希密码?
- 22. 有没有办法通过遗传算法检测公式?
- 23. 参数无法通过PARAMS哈希
- 24. 有没有办法通过API或其他方式获取Instagram @Mention History?
- 25. FreeSWITCH:有没有办法通过本地API从其他腿获取音频流
- 26. 有没有办法通过会话传递对象并使用其功能?
- 27. 有没有办法使ToEnum通用
- 28. 有没有办法隐藏JavaScript代码?
- 29. 有没有办法从代码
- 30. 有没有办法在代码
这将是更有趣知道为什么会有人想要这样做。 – 2014-09-06 13:08:20