我想用带有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/

10-11 22:38
查看更多