什么时候使用接口作为键类型对HashMaps有意义?

时间:2014-06-10 21:57:10

标签: java

在我看来,任何使用密钥类型的接口实例化HashMap的情况都会违背地图的想法。请看以下示例:

HashMap<MyInterface, Integer> map = new HashMap<MyInterface, Integer>();

如果我将2个不同MyInterface实现的对象放入映射中,那么它们都将在自己的hashCode()实现上运行,并且HashMap的整个基础逻辑不再有意义。所以我的问题是,是否有适当的时间将接口用作HashMaps中的键?

2 个答案:

答案 0 :(得分:0)

  

它们都将在自己的hashCode()实现上运行,并且HashMap的整个底层逻辑不再有意义

我猜你的意思是哈希碰撞。散列冲突不会破坏哈希映射。在java中,你需要正确实现&#34; equals&#34;与&#34; hashCode&#34;一起使用用于解析密钥的哈希映射。

答案 1 :(得分:0)

怎么样:

Map<Connection,AtomicInteger> outstandingQueries = new HashMap<>();

java.sql.Connection是一个界面,这个Map是有意义的。 equalshashCode的实现仍然可以区分不同类型的对象。