是否可以实现由给定HashSet实现支持的MyHashMap?

时间:2014-01-23 07:06:33

标签: java data-structures hashmap hashset

众所周知,在Sun(Oracle)JDK中,HashSetHashMap支持,以重用复杂的算法和数据结构。 但是,是否可以使用MyHashMap来实现java.util.HashSet? 如果可能,怎么样?如果没有,为什么?

请注意,此问题仅是对编码技巧的讨论,不适用于制作场景。

1 个答案:

答案 0 :(得分:5)

Trove将它的Map基于它的Set实现。但是,它有一个缺少Set的关键方法,它是一个get()方法。

如果没有get(Element)方法,HashSet就无法执行查找,这是Map的关键功能。 (原谅双关语)唯一的选择Set是一个包含可以被黑客攻击来执行get()但它不是理想的包含。

你可以拥有;

  • 一个Set,其中Entry是键和值。
  • 当密钥相同时,您将条目定义为相等。
  • 你破解了equals()方法,所以当匹配时,在“put”上更新条目的值部分,在“get”上复制值部分。

Set可以被设计为扩展为Map,但它不是,并且使用HashSet或现有的Set实现来创建Map不是一个好主意。