直接使用HashCode访问HashSet? (JAVA)
发布时间:2020-12-15 00:47:21 所属栏目:Java 来源:网络整理
导读:嗨,我想知道如果你有你正在寻找的对象的Hashcode,是否可以直接访问HashSet的内容,有点像使用HashCode作为HashMap中的键. 我想它可能会像这样: MyObject object1 = new MyObject(1); SetMyObject MyHashSet = new HashSetMyObject();MyHashSet.add(object1)i
嗨,我想知道如果你有你正在寻找的对象的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使用原始整数进行比较. 我不知道你的HashKeyedSet需要多么“丰富”,但基本的哈希表真的不太难. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |