首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinkedHashSet javadoc中的Bug?

LinkedHashSet javadoc中的Bug?
EN

Stack Overflow用户
提问于 2011-02-03 01:32:23
回答 2查看 447关注 0票数 0

也许我很挑剔,但是在javadoc中有以下关于LinkedHashSet实现的信息:

此实现与HashSet不同的是,它维护一个通过其所有条目运行的双链接列表。

我在LinkedHashSet类中找不到任何双链接列表.有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-03 01:40:57

是的,当你在没有钻研的情况下看源的时候,你会觉得有点不舒服。注意,它调用了包保护的HashSet构造函数,该构造函数接受一个无意义的名为杜米的布尔值:

代码语言:javascript
复制
public LinkedHashSet(int initialCapacity, float loadFactor) {
    super(initialCapacity, loadFactor, true);
}

然后使用LinkedHashMap而不是HashMap来支持集合。实际上,LinkedHashSet实际上是在HashSet中,它只是一个受保护的包,所以您必须使用LinkedHashSet来获取它。

票数 4
EN

Stack Overflow用户

发布于 2011-02-03 01:34:47

双链接列表在实现端,不一定公开供您获取和使用。

它保持双链接列表,以便跟踪将项插入到集合中的顺序(以及存取顺序LinkedHashMaps中访问元素的顺序)。常规的HashSet不需要双链接列表,因为它不能保证其内容的顺序。

他们可能在javadoc中包含了这个部分,这样您就可以知道他们是如何做到的,并且使用LinkedHashSet在幕后所做的事情要比普通的HashSet多一点。

您可以查看谷歌代码搜索的源代码(您会注意到LinkedHashSet实际上只是包装在LinkedHashMap上,但这并不是一个非常重要的细节)。

最后,这并不是javadocs中的错误,您不应该担心在LinkedHashSet和LinkedHashMap中存在一个双链接列表。我们可以愉快地利用LinkedHashMap维护插入的顺序,不考虑幕后发生的事情。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4881868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档