众所周知,在Sun(Oracle)JDK中,HashSet
由HashMap
支持,以重用复杂的算法和数据结构。
但是,是否可以使用MyHashMap
来实现java.util.HashSet
?
如果可能,怎么样?如果没有,为什么?
请注意,此问题仅是对编码技巧的讨论,不适用于制作场景。
答案 0 :(得分:5)
Trove将它的Map基于它的Set实现。但是,它有一个缺少Set的关键方法,它是一个get()方法。
如果没有get(Element)方法,HashSet就无法执行查找,这是Map的关键功能。 (原谅双关语)唯一的选择Set是一个包含可以被黑客攻击来执行get()但它不是理想的包含。
你可以拥有;
Set可以被设计为扩展为Map,但它不是,并且使用HashSet或现有的Set实现来创建Map不是一个好主意。