首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TreeMaps会自动排序密钥吗?

TreeMaps会自动排序密钥吗?
EN

Stack Overflow用户
提问于 2020-04-05 20:01:45
回答 3查看 787关注 0票数 0

在使用HashMap存储Player对象和Integer时,我在对HashMap进行排序时被卡住了,建议使用TreeMap,在阅读了一些文档之后,它似乎根据输入的键对地图进行排序。

所以从理论上讲,如果我做了TreeMap,它会为我排序地图吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-05 20:04:01

是的,如果您调用yourmap.keySet().iterator(),它将根据键以升序返回元素。这要么是它们的自然顺序,要么是您定义的比较器。在内部,它可能会像这样使用有序遍历

您可以看到,在每个节点的左侧子树上,值都较小,而右侧的值则更大。因此,如果您首先列出左边的元素,然后是节点本身,然后是右边的所有元素,则按升序排列。如果递归地将此规则应用于每个节点,则会收到所需的迭代器。

您可以找到一个关于如何在Java 这里中使用此方法的示例。

请记住,HashMap的查找值为O(1),而TreeMap有O(log(n))。除非您依赖于键的排序,否则您应该更喜欢HashMap,因为它更快。

票数 2
EN

Stack Overflow用户

发布于 2020-04-05 20:15:27

树映射按键进行排序,树映射对其键按自然顺序进行排序,还允许您使用比较器进行自定义排序实现。我们可以在地图创建时提供比较器,这取决于所使用的构造函数。

票数 1
EN

Stack Overflow用户

发布于 2020-04-05 20:15:18

HashMap-s不保证元素排序。但是,TreeMap是作为树结构实现的。(一棵接近平衡的红黑树)。元素按顺序存储和遍历。与HashMap的O(1)相比,检索复杂度为O(log )。

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

https://stackoverflow.com/questions/61048702

复制
相关文章

相似问题

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