我看到LinkedHashSet
延伸HashSet
,我知道它会保留顺序
但是,通过检查JDK中的代码,LinkedHashSet
似乎只包含constuctor而没有实现,所以我猜所有的逻辑都发生在HashSet
?
如果这是正确的,为什么它是这样设计的?这看起来很混乱。
编辑:问题中有一个不幸的错误。我写了HashMap
和LinkedHashMap
而不是HashSet
和LinkedHashSet
。如果可能,我修正了问题的答案
另外,我很感兴趣Java设计师为什么选择这样实现它。
答案 0 :(得分:1)
是的,LinkedHashMap
调用其超级构造函数。它做的一件事是覆盖由超级构造函数调用的init()
方法。
LinkedHashMap
是HashMap
,其中添加了双向链接列表实现。
答案 1 :(得分:0)
正如您所说,两个数据结构之间的区别在于LinkedHashMap
是HashMap
,它保留了对的插入顺序。
因此,链接版本旨在通过HashMap
的标准方法用作HashMap
,并且添加的唯一方法是removeEldestEntry(),如果您要处理“列表”,则非常有用“数据结构的一部分。