Jai*_*iro 5 java collections implementation
我想用一个带有2个组件的键来实现HashMap.防爆.
Pseudocode: Key = <Component1, Component2> CollName<Key, Val> coll = new CollName<Key, Val>;
考虑到Collection的速度和大小,我如何在Java中实现它.感谢:D
您需要一个包含两个键的辅助(复合键)类
public class CompositeKey<... , ...> {
... component1;
... component2;
// getter , setter, ...
// equals
// hashcode()
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用它作为关键:
CompositeKey cKey = new CompositeKey(1,2);
Map x.put(cKey,val);
Run Code Online (Sandbox Code Playgroud)
在这里实施equals()和hashCode()以良好的方式非常重要.大多数IDE可以在这里为您提供帮助.重要的是,hashCode返回一个"唯一"值,以防止密钥的哈希冲突(即返回一个常量值是最坏的情况,因为所有值都会在同一个桶中结束).许多哈希码的实现都在做
hashcode = component1.hashCode() + 37* component2.hashCode();
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多详细信息,请挖掘出任何讨论散列算法的CS书籍.
如果你想用它来持久化,也可以看看这篇博文.