在我看来,任何使用密钥类型的接口实例化HashMap
的情况都会违背地图的想法。请看以下示例:
HashMap<MyInterface, Integer> map = new HashMap<MyInterface, Integer>();
如果我将2个不同MyInterface
实现的对象放入映射中,那么它们都将在自己的hashCode()
实现上运行,并且HashMap
的整个基础逻辑不再有意义。所以我的问题是,是否有适当的时间将接口用作HashMaps
中的键?
答案 0 :(得分:0)
它们都将在自己的hashCode()实现上运行,并且HashMap的整个底层逻辑不再有意义
我猜你的意思是哈希碰撞。散列冲突不会破坏哈希映射。在java中,你需要正确实现&#34; equals&#34;与&#34; hashCode&#34;一起使用用于解析密钥的哈希映射。
答案 1 :(得分:0)
怎么样:
Map<Connection,AtomicInteger> outstandingQueries = new HashMap<>();
java.sql.Connection
是一个界面,这个Map
是有意义的。 equals
和hashCode
的实现仍然可以区分不同类型的对象。