直接使用HashCode访问HashSet? (JAVA)

前端之家收集整理的这篇文章主要介绍了直接使用HashCode访问HashSet? (JAVA)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我想知道如果你有你正在寻找的对象的Hashcode,是否可以直接访问HashSet的内容,有点像使用HashCode作为HashMap中的键.

我想它可能会像这样:

MyObject object1 = new MyObject(1); 

Set<MyObject> MyHashSet = new HashSet<MyObject>();

MyHashSet.add(object1)

int hash = object1.getHashCode

MyObject object2 = MyHashSet[hash]???

谢谢!

编辑:谢谢你的回答.好吧,我明白我可能会推动HashSet的合同,但是对于这个特定的项目,相等性完全由哈希码决定,我确信每个哈希码/ hashbucket只有一个对象.我非常不愿意使用HashMap的原因是因为我需要将我正在映射的原始int转换为Integer对象,因为HashMap只接受对象作为键,我也担心这可能会影响性能.我还能做些什么来实现类似的东西吗?

解决方法

HashSet的常见实现由HashMap支持(相当懒惰),因此您可能会失败避免使用HashMap.

在过早优化是所有邪恶的根源的基础上,我建议你最初使用HashMap,如果int和来自Integer的装箱/拆箱开销实际上是一个问题,你必须实现(或找到)一个手工制作的HashSet使用原始整数进行比较.
标准Java库真的不想关注装箱/拆箱成本.
很久以前,整个语言都将这种性能问题卖得很简单.
请注意,这些天(自2004年以来!)语言自动包装盒和取消装箱,显示“你不需要担心这个”政策.在大多数情况下,这是正确的.

我不知道你的HashKeyedSet需要多么“丰富”,但基本的哈希表真的不太难.

猜你在找的Java相关文章