java的LinkedHashSet是怎样实现存取有序的, 底层原理是什么

 我来答
西安IT优就业
2018-05-03 · TA获得超过1561个赞
知道小有建树答主
回答量:1108
采纳率:90%
帮助的人:186万
展开全部

LinkedHashSet 的实现

对于 LinkedHashSet 而言,它继承与 HashSet、又基于 LinkedHashMap 来实现的。

LinkedHashSet 底层使用 LinkedHashMap 来保存所有元素,它继承与 HashSet,其所有的方法操作上又与 HashSet 相同,因此 LinkedHashSet 的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用父类的构造器,底层构造一个 LinkedHashMap 来实现,在相关操作上与父类 HashSet 的操作相同,直接调用父类 HashSet 的方法即可。

需要注意理解的点是:

  • LinkedHashSet 是 Set 的一个具体实现,其维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。

  • LinkedHashSet 继承与 HashSet,并且其内部是通过 LinkedHashMap 来实现的。有点类似于我们之前说的LinkedHashMap 其内部是基于 Hashmap 实现一样,不过还是有一点点区别的(具体的区别大家可以自己去思考一下)。

  • 如果我们需要迭代的顺序为插入顺序或者访问顺序,那么 LinkedHashSet 是需要你首先考虑的。

飛来飛去没
2018-06-23
知道答主
回答量:22
采纳率:0%
帮助的人:1.6万
展开全部
LinkedHashSet保证存取有序的底层原理是:链表结构。
简单地说,链表结构,就是前一个对象保存了下一个对象的引用,所以有连续不断地引用找到下一个对象。
存储的时候:前一个对象就保存了下一个对象的内存地址。
获取的时候:比如你使用Iterator迭代器遍历的时候,会从最开始遍历,根据前一个对象保存的下一个对象的内存地址找到下一个对象,就这样一直找下去,这样就能保证顺序了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
服务端技术精选
2018-05-03
知道答主
回答量:51
采纳率:0%
帮助的人:5.6万
展开全部
看源码去吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式