我想用带有2个组件的键来实现HashMap。前任。
伪代码:
键=
CollName coll =新的CollName ;
考虑到Collection的速度和大小,如何在Java中实现这一点。感谢:D
最佳答案
您需要一个包含两个键的帮助程序(复合键)类
public class CompositeKey<... , ...> {
... component1;
... component2;
// getter , setter, ...
// equals
// hashcode()
}
然后可以将其用作键:
CompositeKey cKey = new CompositeKey(1,2);
Map x.put(cKey,val);
在这里以良好的方式实现
equals()
和hashCode()
非常重要。大多数IDE可以在这里为您提供帮助。对于hashCode来说,重要的是它返回一个“唯一”值以防止键的哈希冲突(即,返回一个恒定值是最坏的情况,因为所有值最终都将存储在同一个存储桶中)。哈希码的许多实现都在做一些事情hashcode = component1.hashCode() + 37* component2.hashCode();
如果您需要更多细节,请挖出任何有关哈希算法的CS书籍。
如果您想将其用于持久性,还可以查看this blog post。
关于带有2个键的Java集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4989408/